İnternette birçok yerde Çince iletilirken /u4e2d/u56fd gibi Unicode kodlu karakterler kullanıldığını gördüm ve içeriğin ne olduğunu bilmek istiyorum ama görmek kolay değil, bu yüzden bu karakter setini normal karakterlere dönüştürmek istiyorum. Başta kodlama formatını Kodlama üzerinden dönüştürdüm ve çalışmadığını gördüm, normalde çözemiyordum, sonra internette benzer bazı kod çözme çözümleri aradım, bunlar mümkün oldu ama yazmanın biraz zahmetli olduğunu gördüm ve Unicode karakter partilerim varsa doğrudan çıktı veremiyordum, sonra bakıp baktım ve sonunda iki karakter sınıfı yöntemi buldum: biri char. ConvertFromUtf32, yorumda şöyle diyor: Belirtilen Unicode kod bitini UTF-16 kodlu bir diziye dönüştür, bu sadece kod çözme değil mi; Bir diğeri ise char. ConvertToUtf32, yorum: Bu yöntem, dizide belirli pozisyonlarda UTF-16 kodlanmış karakterleri Unicode kod noktalarına dönüştürmektir; aslında sıradan karakterleri Unicode karakter kümelerine dönüştürmektir.
- /// <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;
- }
Kopya kodu
|