Am observat că multe locuri de pe Internet folosesc caractere precum /u4e2d/u56fd când transmit în chineză, care sunt caractere codificate Unicode, și vreau să știu care este conținutul specific, dar nu este ușor de observat, așa că vreau să decodez acest set de caractere în caractere normale. La început, am convertit formatul de codare prin Encoding și am constatat că nu funcționa, nu puteam rezolva normal, apoi am căutat soluții similare de decodare pe Internet, care erau fezabile, dar am descoperit că era puțin dificil de scris, iar dacă aveam loturi de caractere Unicode, nu le puteam genera direct, apoi m-am uitat la ele și, în cele din urmă, am găsit două metode de clase char: una este char. ConvertFromUtf32, comentariul spune: Convertiți bitul de cod Unicode specificat într-un șir codificat UTF-16, nu este asta doar decodare; Altul este ars. ConvertToUtf32, comentariu: Această metodă este de a converti caracterele codificate UTF-16 în poziții specificate ale șirului în puncte de cod Unicode, ha, de fapt, este vorba de a converti caracterele obișnuite în seturi de caractere Unicode.
- /// <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;
- }
Cod de copiere
|