我有一个来自文本文件的Unicode字符串。我想展示真实的角色。
例如:
\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b
当使用StreamReader.ReadToLine()
从文本文件中读取此字符串时,它会将\
转义为'\\'
,例如"\\u8ba1"
,这是不需要的。
它将显示与文本相同的Unicode字符串。我想要的是显示真实的角色。
"\\u8ba1"
更改为"\u8ba1"
。 答案 0 :(得分:17)
如果您有像
这样的字符串var input1 = "\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b";
// input1 == "计算机•网络•技术类"
你不需要任何东西。它只是包含转义序列的字符串文字,而不是字符串本身。
如果您有像
这样的字符串var input2 = @"\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b";
你可以使用以下正则表达式来解决它:
var result = Regex.Replace(
input2,
@"\\[Uu]([0-9A-Fa-f]{4})",
m => char.ToString(
(char)ushort.Parse(m.Groups[1].Value, NumberStyles.AllowHexSpecifier)));
// result == "计算机•网络•技术类"
答案 1 :(得分:0)
这个问题出现在谷歌搜索的第一个结果,但我认为应该有一个更简单的方式......这是我最终使用的:
using System.Web;
//...
string x = HttpUtility.UrlDecode("Ingl\u00e9s");
Console.Write(x); // Inglés