He visto que en muchos sitios de Internet se usan caracteres como /u4e2d/u56fd al transmitir chino, que son caracteres codificados en Unicode, y quiero saber cuál es el contenido específico, pero no es fácil de ver, así que quiero decodificar este conjunto de caracteres en caracteres normales. Al principio, convertí el formato de codificación a través de Encoding, y descubrí que no funcionaba, y no podía resolverlo normalmente, y luego busqué soluciones similares de decodificación en Internet, que eran factibles, pero descubrí que era un poco complicado de escribir, y si tenía lotes de caracteres Unicode, no podía sacarlos directamente, y luego los miré y los revisé, y finalmente encontré dos métodos de clases char: uno es char. ConvertFromUtf32, el comentario dice: Convierte el bit de código Unicode especificado a una cadena codificada en UTF-16, ¿no es esto solo decodificar? Otro es el carbón. ConvertToUtf32, comentario: Este método consiste en convertir caracteres codificados en UTF-16 en posiciones específicas de la cadena en puntos de código Unicode, jaja, de hecho, es convertir caracteres ordinarios en conjuntos de caracteres 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;
- }
Copiar código
|