|
|
게시됨 2015. 9. 7. 오전 10:57:18
|
|
|

인터넷에서 많은 곳에서 중국어 전송 시 /u4e2d/u56fd 같은 유니코드 인코딩 문자를 사용하는 것을 봤는데, 구체적인 내용이 무엇인지 알고 싶지만 쉽게 볼 수 없어서 이 문자 집합을 일반 문자로 해석하고 싶습니다. 처음에는 Encoding으로 인코딩 형식을 변환했는데 작동하지 않았고 정상적으로 풀 수 없었어요. 그러다 인터넷에서 비슷한 디코딩 방법을 찾아봤는데, 쓸 만했지만 작성이 좀 까다로웠고, 유니코드 문자 묶음이 있으면 직접 출력할 수 없었어요. 계속 살펴보니 두 가지 char 클래스 방법을 찾았어요: 하나는 char입니다. ConvertFromUtf32, 댓글은 이렇게 말합니다: 지정된 유니코드 코드 비트를 UTF-16 인코딩된 문자열로 변환하세요, 이게 단순히 디코딩 아닌가요? 또 다른 것은 숯입니다. ConvertToUtf32, 주석: 이 방법은 문자열 내 지정된 위치에서 UTF-16 인코딩된 문자를 유니코드 코드 포인트로 변환하는 것입니다. 하하, 사실 일반 문자를 유니코드 문자 집합으로 변환하는 것입니다.
- /// <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;
- }
코드 복사
|
이전의:JS 중국어 문자와 유니코드 인코딩이 교환됩니다. 유니코드 암호화, 유니코드 복호화다음:Cisco 라우터에서 포트 매핑을 어떻게 하나요?
|