簡體   English   中英

如何解碼字符串中的 Unicode 字符

[英]How to decode a Unicode character in a string

我如何在 C# 中解碼這個字符串 'Sch\önen' ( @"Sch\önen" ),我試過 HttpUtility 但它沒有給我我需要的結果,即“Schönen”。

Regex.Unescape做到了:

System.Text.RegularExpressions.Regex.Unescape(@"Sch\u00f6nen");

請注意,在測試變體或編寫單元測試時需要小心: "Sch\önen"已經是"Schönen" 您需要在字符串前面使用@來將視為字符串的一部分。

如果您因為看到"Sch\önen" (或字符串常量中類似的\\uXXXX值)而遇到此問題 - 它不是編碼。 這是一種將 Unicode 字符表示為轉義序列的方法,類似於 string 表示 New Line by \\n和 Return by \\r

我不認為你必須解碼。

string unicodestring = "Sch\u00f6nen";
Console.WriteLine(unicodestring);

Schönen 被輸出。

編寫了將 unicode 字符串轉換為實際字符的代碼。 (但本主題中的最佳答案工作正常且不那么復雜)。

string stringWithUnicodeSymbols = @"{""id"": 10440119, ""photo"": 10945418, ""first_name"": ""\u0415\u0432\u0433\u0435\u043d\u0438\u0439""}";
var splitted = Regex.Split(stringWithUnicodeSymbols, @"\\u([a-fA-F\d]{4})");
string outString = "";
foreach (var s in splitted)
{
    try
    {
        if (s.Length == 4)
        {
            var decoded = ((char) Convert.ToUInt16(s, 16)).ToString();
            outString += decoded;
        }
        else
        {
            outString += s;
        }
    }
    catch (Exception e)
    {
        outString += s;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM