首頁 >後端開發 >C++ >如何在C#中編碼和解碼Unicode字符?

如何在C#中編碼和解碼Unicode字符?

DDD
DDD原創
2025-01-28 04:51:13526瀏覽

How to Encode and Decode Unicode Characters in C#?

C# 中 Unicode 字符的編碼和解碼

在 C# 中,Encoding 類用於字符編碼和解碼。但是,在處理 ASCII 範圍之外的 Unicode 字符時,它存在局限性。為了保留非 ASCII 字符(例如希臘字母 Pi (π)),我們需要採用特定的技術。

Unicode 字符編碼

要將 Unicode 字符編碼為轉義的 ASCII 字符串,我們使用以下方法:

<code class="language-csharp">static string EncodeNonAsciiCharacters(string value) {
    StringBuilder sb = new StringBuilder();
    foreach (char c in value) {
        if (c > 127) {
            string encodedValue = "\u" + ((int)c).ToString("x4");
            sb.Append(encodedValue);
        } else {
            sb.Append(c);
        }
    }
    return sb.ToString();
}</code>

此方法將非 ASCII 字符替換為其對應的轉義 ASCII 形式,例如,“π” 變成 “u03a0”。

轉義 ASCII 字符解碼

要將轉義的 ASCII 字符串解碼回 Unicode,我們使用正則表達式:

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

此正則表達式將所有出現的轉義 Unicode 字符 (uXXXX) 替換為其對應的 Unicode 字符,例如,“u03a0” 變成 “π”。

示例用法

以下示例說明了編碼和解碼過程:

<code class="language-csharp">string unicodeString = "This function contains a unicode character pi (π)";
string encoded = EncodeNonAsciiCharacters(unicodeString);
string decoded = DecodeEncodedNonAsciiCharacters(encoded);
Console.WriteLine(decoded); // 输出:This function contains a unicode character pi (π)</code>

此示例在整個編碼和解碼過程中保留了非 ASCII 字符 Pi。

以上是如何在C#中編碼和解碼Unicode字符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn