Nägin, et paljud kohad internetis kasutavad hiina keele edastamisel tähemärke nagu /u4e2d/u56fd, mis on Unicode'iga kodeeritud märgid, ja ma tahan teada, mis on konkreetne sisu, aga seda pole lihtne näha, seega tahan selle märgikomplekti dekodeerida tavalisteks märkideks. Alguses konverteerisin kodeerimisformaadi kodeerimise kaudu ja avastasin, et see ei töötanud ning ma ei suutnud seda normaalselt lahendada, siis otsisin internetist sarnaseid dekodeerimislahendusi, mis olid teostatavad, kuid leidsin, et kirjutamine oli veidi keeruline ning kui mul oli Unicode'i tähemärkide partiid, ei saanud ma neid otse välja anda, siis vaatasin ja lõpuks leidsin kaks karakterklassi meetodit: üks on char. ConvertFromUtf32, kommentaar ütleb: Teisenda määratud Unicode koodibitt UTF-16 kodeeritud stringiks, kas see pole lihtsalt dekodeerimine; Teine on kõrbe. ConvertToUtf32, kommentaar: See meetod on UTF-16 kodeeritud tähemärkide teisendamiseks määratud kohtades stringis Unicode'i koodipunktideks, ha, tegelikult tähendab see tavaliste märkide teisendamist Unicode'i märgistikuteks.
- /// <summary>
- /// 把Unicode解码为普通文字
- /// </summary>
- /// <param name="unicodeString">要解码的Unicode字符集</param>
- /// <returns>解码后的字符串</returns>
- public static string ConvertToGB(string unicodeString)
- {
- string[] strArray = unicodeString.Split(new string[] { @"\u" }, StringSplitOptions.None);
- string result = string.Empty;
- for (int i = 0; i < strArray.Length; i++)
- {
- if (strArray[i].Trim() == "" || strArray[i].Length < 2 || strArray.Length <= 1)
- {
- result += i == 0 ? strArray[i] : @"\u" + strArray[i];
- continue;
- }
- for (int j = strArray[i].Length > 4 ? 4 : strArray[i].Length; j >= 2; j--)
- {
- try
- {
- result += char.ConvertFromUtf32(Convert.ToInt32(strArray[i].Substring(0, j), 16)) + strArray[i].Substring(j);
- break;
- }
- catch
- {
- continue;
- }
- }
- }
- return result;
- }
- /// <summary>
- /// 把汉字字符转码为Unicode字符集
- /// </summary>
- /// <param name="strGB">要转码的字符</param>
- /// <returns>转码后的字符</returns>
- public static string ConvertToUnicode(string strGB)
- {
- char[] chs = strGB.ToCharArray();
- string result = string.Empty;
- foreach (char c in chs)
- {
- result += @"\u" + char.ConvertToUtf32(c.ToString(), 0).ToString("x");
- }
- return result;
- }
Kopeeri kood
|