Я бачив, що в багатьох місцях в Інтернеті використовують символи на кшталт /u4e2d/u56fd при передачі китайської мови, які є символами, закодованими в Unicode, і я хочу знати, який саме зміст, але це важко побачити, тому хочу розшифрувати цей набір символів у звичайні символи. Спочатку я конвертував формат кодування через Encoding, але виявив, що це не працює, і я не міг розв'язати це нормально, потім шукав подібні рішення для декодування в Інтернеті, які були реальними, але виявив, що це трохи складно з написанням, і якщо у мене були партії символів Unicode, я не міг вивести їх напряму, потім я переглянув і подивився, і нарешті знайшов два методи класів символів: один — char. ConvertFromUtf32, у коментарі сказано: Конвертувати вказаний біт коду Unicode у рядок, закодований UTF-16, хіба це не просто декодування; Ще один — це обвуглювання. ConvertToUtf32, коментар: Цей метод полягає у конвертації символів, закодованих UTF-16 у визначених позиціях рядка, у точки коду Unicode, ха, фактично, це конвертація звичайних символів у набори символів 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;
- }
Копія коду
|