"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > ASCII 문자열에서 유니 코드 문자를 피하는 방법?

ASCII 문자열에서 유니 코드 문자를 피하는 방법?

2025-03-22에 게시되었습니다
검색:217

How to Escape Unicode Characters in ASCII Strings?

ascii string에서 유니 코드 문자를 탈출

]

일부 프로그래밍 시나리오에서 유니 코드 문자를 탈출 한 ASCII 문자열로 변환하는 것이 일반적인 요구 사항입니다. 이 프로세스를 사용하면 유니 코드 문자를 보존 할 수 있습니다. 그렇지 않으면 인코딩 프로세스 중에 다른 문자로 손실되거나 대체 될 수 있습니다.

예를 들어, 유니 코드 문자 π (pi)를 포함하는 문자열은 이스케이프 ASCII 형식 (\ u03a0)으로 변환해야합니다. 이 변환은 유니 코드 문자를 지원하지 않는 시스템에서 문자열이 인코딩 되더라도 문자가 보존되도록합니다.

이렇게하려면 문자열의 비 ASCII 문자를 해당 탈출 시퀀스로 대체해야합니다. 이 탈출 시퀀스는 백 슬래시 (\)로 시작한 다음 유니 코드 코드 포인트의 16 진수 표현으로 시작합니다. 예를 들어, π의 유니 코드 코드 포인트는 03a0이므로 이스케이프 시퀀스는 \ u03a0이됩니다.

다음 C# 코드는 \ uxxxx Escape 형식을 사용하여 비 ASCII 문자를 인코딩하고 디코딩하는 방법을 보여줍니다.

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        string unicodeString = "此函数包含一个Unicode字符pi (\u03a0)";

        Console.WriteLine(unicodeString);

        string encoded = EncodeNonAsciiCharacters(unicodeString);
        Console.WriteLine(encoded);

        string decoded = DecodeEncodedNonAsciiCharacters(encoded);
        Console.WriteLine(decoded);
    }

    static string EncodeNonAsciiCharacters(string value)
    {
        StringBuilder sb = new StringBuilder();
        foreach (char c in value)
        {
            if (c > 127)
            {
                // 此字符对于ASCII来说太大
                string encodedValue = "\\u"   ((int)c).ToString("x4");
                sb.Append(encodedValue);
            }
            else
            {
                sb.Append(c);
            }
        }
        return sb.ToString();
    }

    static string DecodeEncodedNonAsciiCharacters(string value)
    {
        return Regex.Replace(
            value,
            @"\\u(?[a-zA-Z0-9]{4})",
            m =>
            {
                return ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString();
            });
    }
}

이 코드에서 Encodenonasciicharacters 메소드는 입력 문자열을 가로 지르고 ASCII가 아닌 문자를 인식하여 이스케이프 시퀀스로 변환합니다. 반면에, decodeencodednonasciicharacters

메소드는 정기 표현식을 사용하여 탈출 된 문자열을 사용하여 원래 유니 코드 문자로 다시 변환합니다.

이 프로그램의 출력은 프로세스를 보여줍니다 :
此函数包含一个Unicode字符pi (π)
此函数包含一个Unicode字符pi (\u03a0)
此函数包含一个Unicode字符pi (π)

]를 포함합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3