Viděl jsem, že mnoho míst na internetu používá znaky jako /u4e2d/u56fd při přenosu čínštiny, což jsou znaky kódované Unicode, a chci vědět, jaký konkrétní obsah to je, ale není to snadné vidět, takže chci tuto znakovou sadu rozluštit do běžných znaků. Nejprve jsem převedl kódovací formát pomocí Encodingu, ale zjistil jsem, že to nefunguje a nemohu to vyřešit normálně, pak jsem hledal podobná dekódovací řešení na internetu, která byla proveditelná, ale zjistil jsem, že je to trochu obtížné napsat, a pokud jsem měl dávky Unicode znaků, nemohl jsem je přímo vygenerovat, pak jsem se na ně podíval a nakonec jsem našel dvě metody tříd znaků: jedna je char. ConvertFromUtf32, komentář říká: Převeďte specifikovaný bit Unicode kódu na řetězec kódovaný v UTF-16, není to jen dekódování; Další je Char. ConvertToUtf32, komentář: Tato metoda slouží k převodu znaků kódovaných UTF-16 na určených pozicích v řetězci na Unicode kódové body, ha, ve skutečnosti jde o převod běžných znaků na Unicode znakové sady.
- /// <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;
- }
Kopírovat kód
|