Function chinese2unicode(Str) Dim Str_one:Str_one = "" Dim Str_unicode:Str_unicode = "" For i = 1 To Len(Str) Str_one = Mid(Str, i, 1) If AscW(Str_one) < 0 or AscW(Str_one) > 255 Then Str_unicode = Str_unicode & Chr(38) Str_unicode = Str_unicode & Chr(35) Str_unicode = Str_unicode & Chr(120) Str_unicode = Str_unicode & Hex(AscW(Str_one)) Str_unicode = Str_unicode & Chr(59) Else Str_unicode = Str_unicode & Str_one End If Next chinese2unicode=Str_unicode End Function
/// <summary> /// %26%23x4EB2%3B%26%23x7231%3B%26%23x7684%3B%26%23x4F1A%3B%26%23x5458%3BTeresaLiu%2C%26%23x516D%3B%26%23x798F%3B%26%23x73E0%3B%26%23x5BF6%3B%26%23x6703%3B%26%23x54E1%3B%26%23x5BC6%3B%26%23x78BC%3B%26%23x4FEE%3B%26%23x6539%3B%26%23x9805%3B%26%23x901A%3B%26%23x77E5%3B%26%23xFF1A%3B%26%23x95A3%3B%26%23x4E0B%3B%26%23x5DF2%3B%26%23x6210%3B%26%23x529F%3B%26%23x66F4%3B%26%23x6539%3B%26%23x5BC6%3B%26%23x78BC%3B%26%23xFF0C%3B%26%23x5982%3B%26%23x6709%3B%26%23x67E5%3B%26%23x8A62%3B%26%23xFF0C%3B%26%23x8ACB%3B%26%23x81F4%3B%26%23x96FB%3B%26%23x9999%3B%26%23x6E2F%3B27109368%26%23xFF0F%3B%26%23x4E2D%3B%26%23x570B%3B4008846222 ///塗聚文 20140724 /// </summary> /// <param name="str"></param> /// <returns></returns> private string chinese2uncode(string str) { string s = ""; string outStr = ""; if (!string.IsNullOrEmpty(str)) { for (int i = 0; i < str.Length; i++) { if (Microsoft.VisualBasic.Strings.AscW(str[i].ToString()) < 0 || Microsoft.VisualBasic.Strings.AscW(str[i].ToString())>255) //如果是中文轉換Regex.IsMatch(str[i].ToString(), @"[\u4e00-\u9fa5]") { //outStr += "\\u" + ((int)str[i]).ToString("x"); outStr = outStr+(char)38;// "&";//char(38); outStr = outStr + (char)35;// "#"; outStr = outStr + (char)120;// "x"; outStr = outStr + Microsoft.VisualBasic.Conversion.Hex(Microsoft.VisualBasic.Strings.AscW(str[i].ToString())); //outStr + outStr = outStr + (char)59;// ";"; //Str_unicode = Str_unicode & Chr(38) //Str_unicode = Str_unicode & Chr(35) //Str_unicode = Str_unicode & Chr(120) //Str_unicode = Str_unicode & Hex(AscW(Str_one)) //Str_unicode = Str_unicode & Chr(59)// ; } else { outStr += str[i]; } } } s = outStr; return s; }
string newcontent = Encoding.Unicode.GetString(newa);
加個斷點,這一句中newa的值多少?
下面的例子可以實現Unicode和Ansi之間的轉換:
using System.IO;
using System.Text;
// convert DBCS-932 encoded file to unicode-file
Encoding ecp932 = Encoding.GetEncoding( 932 );
StreamReader sr = new StreamReader( @"C:\cp932.txt", ecp932, false );
StreamWriter sw = new StreamWriter( @"C:\unicode.txt", false,
Encoding.Unicode );
sw.Write( sr.ReadToEnd() );
sw.Close();
sr.Close();
// convert unicode-file to ANSI text file
Encoding ecp1252 = Encoding.GetEncoding( 1252 );
sr = new StreamReader( @"C:\unicode.txt", Encoding.Unicode, false );
sw = new StreamWriter( @"C:\cp1252.txt", false, ecp1252 );
sw.Write( sr.ReadToEnd() );
sw.Close();
sr.Close();
參考 msdn
support.microsoft.com/kb/138813