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