C \ # 에서 인 코딩 된 문자열 을 다른 인 코딩 으로 변환 하 는 방법 입 니 다.

1690 단어 부호화utf-8c#
서버 에 요청 을 보 내 고 되 돌아 오 는 JSON 을 받 았 을 때 문자열 의 인 코딩 은 우리 가 원 하 는 것 이 아 닐 수도 있 습 니 다.예 를 들 어 돌아 오 는 것 이 GB 2132 라면 C \ # 에 서 는 어 지 러 울 수 있 습 니 다.이때 우 리 는 GB 2132 를 UTF - 8 로 바 꾸 는 등 코드 를 바 꿔 야 한다.
다음 함수 TransferStr 는 디 코딩 을 완성 하고 Test 함 수 를 호출 하여 시범 을 보 여 줍 니 다.
private void Test()
{
   Encoding strUtf8 = Encoding.UTF8;
   Encoding strGb2312 = Encoding.GetEncoding("GB2312");
   string str = "  ";// Suppose str is a GB2312 string 
   str = TransferStr(str, strGb2312, strUtf8);
   Console.WriteLine(str);
}

private string TransferStr(string str, Encoding originalEncode, Encoding targetEncode)
{
    try
    {
        byte[] unicodeBytes = originalEncode.GetBytes(str);
        byte[] asciiBytes = Encoding.Convert(originalEncode, targetEncode, unicodeBytes);
        char[] asciiChars = new char[targetEncode.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
        targetEncode.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
        string result = new string(asciiChars);
        return result;
    }
    catch
    {
        Console.WriteLine("There is an exception.");
        return "";
    }
}

마지막 출력 은 더 이상 난 장 판이 아니다.
또한 코드 에 StreamReader 로 처리 하면 HttpWebResponse 이 버 전의 구조 함 수 를 사용 하 는 것 이 좋 습 니 다.
StreamReader(Stream stream, Encoding encoding);

사용 예 는 다음 과 같 습 니 다.
//response's type is HttpWebResponse
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(response.CharacterSet));

이렇게 하면 어떤 유형의 인 코딩 을 되 돌려 주 든 자신의 인 코딩 유형 에 따라 정확하게 전환 할 수 있다.

좋은 웹페이지 즐겨찾기