
Hàm xử lý các ký tự bị mã hóa khi xem Source HTML của trang web Viết bằng C#
Thứ Sáu, 13 tháng 12, 2013
Có những lúc cần xử lý thông tin trên các trang web, nhưng khi thực hiện request thì web server trả về các ký tự bị mã hóa như Á;o: Cha giam cầm, cưỡng hiếp và có 7 con với con g& . Với những trường hợp này mình có thể xử lý bằng các phần mềm như FrontPage để chuyển mã, ngoài ra chúng ta có thể viết 1 hàm để xử lý. Thuật toán thật ra rất đơn giản là chuyển mã thành các ký tự tương ứng giống như thuật toán trong bài viết
Chi tiết hàm này như sau:
Chi tiết hàm này như sau:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace DaMi.Utilities
{
public class clsGiaiMaCodeHtmlToVietNam
{
public static string DecodeHtml(string sCodedString)
{
StringBuilder sResult = new StringBuilder(sCodedString);
ArrayList arlChuviet = new ArrayList();
arlChuviet.AddRange(new string[2] { "Á", "Á" });
arlChuviet.AddRange(new string[2] { "á", "á" });
arlChuviet.AddRange(new string[2] { "À", "À" });
arlChuviet.AddRange(new string[2] { "à", "à" });
arlChuviet.AddRange(new string[2] { "Ã", "Ã" });
arlChuviet.AddRange(new string[2] { "ã", "ã" });
arlChuviet.AddRange(new string[2] { "?", "Ả" });
arlChuviet.AddRange(new string[2] { "?", "ả" });
arlChuviet.AddRange(new string[2] { "?", "Ạ" });
arlChuviet.AddRange(new string[2] { "?", "ạ" });
arlChuviet.AddRange(new string[2] { "Â", "Â" });
arlChuviet.AddRange(new string[2] { "â", "â" });
arlChuviet.AddRange(new string[2] { "?", "Ấ" });
arlChuviet.AddRange(new string[2] { "?", "ấ" });
arlChuviet.AddRange(new string[2] { "?", "Ầ" });
arlChuviet.AddRange(new string[2] { "?", "ầ" });
arlChuviet.AddRange(new string[2] { "?", "Ẫ" });
arlChuviet.AddRange(new string[2] { "?", "ẫ" });
arlChuviet.AddRange(new string[2] { "?", "Ẩ" });
arlChuviet.AddRange(new string[2] { "?", "ẩ" });
arlChuviet.AddRange(new string[2] { "?", "Ậ" });
arlChuviet.AddRange(new string[2] { "?", "ậ" });
arlChuviet.AddRange(new string[2] { "A", "Ă" });
arlChuviet.AddRange(new string[2] { "a", "ă" });
arlChuviet.AddRange(new string[2] { "?", "Ắ" });
arlChuviet.AddRange(new string[2] { "?", "ắ" });
arlChuviet.AddRange(new string[2] { "?", "Ằ" });
arlChuviet.AddRange(new string[2] { "?", "ằ" });
arlChuviet.AddRange(new string[2] { "?", "Ẵ" });
arlChuviet.AddRange(new string[2] { "?", "ẵ" });
arlChuviet.AddRange(new string[2] { "?", "Ẳ" });
arlChuviet.AddRange(new string[2] { "?", "ẳ" });
arlChuviet.AddRange(new string[2] { "?", "Ặ" });
arlChuviet.AddRange(new string[2] { "?", "ặ" });
arlChuviet.AddRange(new string[2] { "Ð", "Đ" });
arlChuviet.AddRange(new string[2] { "d", "đ" });
arlChuviet.AddRange(new string[2] { "É", "É" });
arlChuviet.AddRange(new string[2] { "é", "é" });
arlChuviet.AddRange(new string[2] { "È", "È" });
arlChuviet.AddRange(new string[2] { "è", "è" });
arlChuviet.AddRange(new string[2] { "?", "Ẽ" });
arlChuviet.AddRange(new string[2] { "?", "ẽ" });
arlChuviet.AddRange(new string[2] { "?", "Ẻ" });
arlChuviet.AddRange(new string[2] { "?", "ẻ" });
arlChuviet.AddRange(new string[2] { "?", "Ẹ" });
arlChuviet.AddRange(new string[2] { "?", "ẹ" });
arlChuviet.AddRange(new string[2] { "Ê", "Ê" });
arlChuviet.AddRange(new string[2] { "ê", "ê" });
arlChuviet.AddRange(new string[2] { "?", "Ế" });
arlChuviet.AddRange(new string[2] { "?", "ế" });
arlChuviet.AddRange(new string[2] { "?", "Ề" });
arlChuviet.AddRange(new string[2] { "?", "ề" });
arlChuviet.AddRange(new string[2] { "?", "Ễ" });
arlChuviet.AddRange(new string[2] { "?", "ễ" });
arlChuviet.AddRange(new string[2] { "?", "Ể" });
arlChuviet.AddRange(new string[2] { "?", "ể" });
arlChuviet.AddRange(new string[2] { "?", "Ệ" });
arlChuviet.AddRange(new string[2] { "?", "ệ" });
arlChuviet.AddRange(new string[2] { "Í", "Í" });
arlChuviet.AddRange(new string[2] { "í", "í" });
arlChuviet.AddRange(new string[2] { "Ì", "Ì" });
arlChuviet.AddRange(new string[2] { "ì", "ì" });
arlChuviet.AddRange(new string[2] { "I", "Ĩ" });
arlChuviet.AddRange(new string[2] { "i", "ĩ" });
arlChuviet.AddRange(new string[2] { "?", "Ỉ" });
arlChuviet.AddRange(new string[2] { "?", "ỉ" });
arlChuviet.AddRange(new string[2] { "?", "Ị" });
arlChuviet.AddRange(new string[2] { "?", "ị" });
arlChuviet.AddRange(new string[2] { "Ó", "Ó" });
arlChuviet.AddRange(new string[2] { "ó", "ó" });
arlChuviet.AddRange(new string[2] { "Ò", "Ò" });
arlChuviet.AddRange(new string[2] { "ò", "ò" });
arlChuviet.AddRange(new string[2] { "Õ", "Õ" });
arlChuviet.AddRange(new string[2] { "õ", "õ" });
arlChuviet.AddRange(new string[2] { "?", "Ỏ" });
arlChuviet.AddRange(new string[2] { "?", "ỏ" });
arlChuviet.AddRange(new string[2] { "?", "Ọ" });
arlChuviet.AddRange(new string[2] { "?", "ọ" });
arlChuviet.AddRange(new string[2] { "Ô", "Ô" });
arlChuviet.AddRange(new string[2] { "ô", "ô" });
arlChuviet.AddRange(new string[2] { "?", "Ố" });
arlChuviet.AddRange(new string[2] { "?", "ố" });
arlChuviet.AddRange(new string[2] { "?", "Ồ" });
arlChuviet.AddRange(new string[2] { "?", "ồ" });
arlChuviet.AddRange(new string[2] { "?", "Ỗ" });
arlChuviet.AddRange(new string[2] { "?", "ỗ" });
arlChuviet.AddRange(new string[2] { "?", "Ổ" });
arlChuviet.AddRange(new string[2] { "?", "ổ" });
arlChuviet.AddRange(new string[2] { "?", "Ộ" });
arlChuviet.AddRange(new string[2] { "?", "ộ" });
arlChuviet.AddRange(new string[2] { "O", "Ơ" });
arlChuviet.AddRange(new string[2] { "o", "ơ" });
arlChuviet.AddRange(new string[2] { "?", "Ớ" });
arlChuviet.AddRange(new string[2] { "?", "ớ" });
arlChuviet.AddRange(new string[2] { "?", "Ờ" });
arlChuviet.AddRange(new string[2] { "?", "ờ" });
arlChuviet.AddRange(new string[2] { "?", "Ỡ" });
arlChuviet.AddRange(new string[2] { "?", "ỡ" });
arlChuviet.AddRange(new string[2] { "?", "Ở" });
arlChuviet.AddRange(new string[2] { "?", "ở" });
arlChuviet.AddRange(new string[2] { "?", "Ợ" });
arlChuviet.AddRange(new string[2] { "?", "ợ" });
arlChuviet.AddRange(new string[2] { "Ú", "Ú" });
arlChuviet.AddRange(new string[2] { "ú", "ú" });
arlChuviet.AddRange(new string[2] { "Ù", "Ù" });
arlChuviet.AddRange(new string[2] { "ù", "ù" });
arlChuviet.AddRange(new string[2] { "U", "Ũ" });
arlChuviet.AddRange(new string[2] { "u", "ũ" });
arlChuviet.AddRange(new string[2] { "?", "Ủ" });
arlChuviet.AddRange(new string[2] { "?", "ủ" });
arlChuviet.AddRange(new string[2] { "?", "Ụ" });
arlChuviet.AddRange(new string[2] { "?", "ụ" });
arlChuviet.AddRange(new string[2] { "U", "Ư" });
arlChuviet.AddRange(new string[2] { "u", "ư" });
arlChuviet.AddRange(new string[2] { "?", "Ứ" });
arlChuviet.AddRange(new string[2] { "?", "ứ" });
arlChuviet.AddRange(new string[2] { "?", "Ừ" });
arlChuviet.AddRange(new string[2] { "?", "ừ" });
arlChuviet.AddRange(new string[2] { "?", "Ữ" });
arlChuviet.AddRange(new string[2] { "?", "ữ" });
arlChuviet.AddRange(new string[2] { "?", "Ử" });
arlChuviet.AddRange(new string[2] { "?", "ử" });
arlChuviet.AddRange(new string[2] { "?", "Ự" });
arlChuviet.AddRange(new string[2] { "?", "ự" });
arlChuviet.AddRange(new string[2] { "Ý", "Ý" });
arlChuviet.AddRange(new string[2] { "ý", "ý" });
arlChuviet.AddRange(new string[2] { "?", "Ỳ" });
arlChuviet.AddRange(new string[2] { "?", "ỳ" });
arlChuviet.AddRange(new string[2] { "?", "Ỹ" });
arlChuviet.AddRange(new string[2] { "?", "ỹ" });
arlChuviet.AddRange(new string[2] { "?", "Ỷ" });
arlChuviet.AddRange(new string[2] { "?", "ỷ" });
arlChuviet.AddRange(new string[2] { "?", "Ỵ" });
arlChuviet.AddRange(new string[2] { "?", "ỵ" });
int j;
for (int i = 0; i < sCodedString.Length; i++)
{
string sTemp = string.Empty;
bool isBegin = true;
if (sCodedString[i] == '&' && sCodedString[i + 1] == '#')
{
j = i;
while (j < sCodedString.Length && isBegin == true)
{
sTemp = sTemp + sCodedString[j].ToString();
if (sCodedString[j] == ';')
{
isBegin = false;
}
j++;
}
if (!string.IsNullOrEmpty(sTemp))
{
int index;
index = arlChuviet.IndexOf(sTemp, 0);
string sNewValue = arlChuviet[index - 1].ToString();
sResult.Replace(sTemp, sNewValue);
}
}
}
return sResult.ToString();
}
}
}
Bài liên quan
Comments[ 0 ]
Đăng nhận xét