我正在从API(通过C#代码)以其原义格式接收数据。其中一些数据中包含非ASCII字符。下面是一个示例:
string universityName = "Universidad de M\u00e1laga";
我将把这些数据插入SQL Server数据库,并想插入Unicode编码版本,而不是文字版本。为此,我需要在插入字符串之前对其进行正确编码。看起来应该像这样:
Universidad de Málaga
我环顾了Stack Overflow,但似乎找不到相关的问题,所以我想问一下。有没有内置的C#库,可以让我给它原始的字符串并让它返回所需的字符串?如果没有,我应该遵循一个流程吗?
我已经尝试使用Encoding.Unicode.GetBytes
来获取字符串的字节,然后将其转换回字符串,但这似乎对我不起作用。我也可能用错了。
答案 0 :(得分:3)
如果我对您的理解正确,则有多种方法可以做到这一点。但是这可能对您有用。
免责声明 :它假定您的字符串在数据库Universidad de M\u00e1laga
< / p>
var test1 = "Universidad de M\\u00e1laga";
var test2 = Regex.Unescape(test1);
Console.WriteLine(test1);
Console.WriteLine(test2);
输出
Universidad de M\u00e1laga
Universidad de Málaga
注意 :这可能表示在整个情况下的总体结构或设计问题。不过,谁知道API会给您带来什么回报?
答案 1 :(得分:0)
您显示的字符串包含一个Unicode character escape sequence,这是在C#字符串中编码字符的一种方式,它主要用于不可打印的字符,但可以用于任何字符。例如,以下所有字符串都相等:
"ab"
"\u0061b"
"a\u0062"
"\u0061\u0062"
您可以这样确认:
Console.WriteLine("ab" == "\u0061b"); // True
Console.WriteLine("ab" == "a\u0062"); // True
Console.WriteLine("ab" == "\u0061\u0062"); // True
在您的情况下:
Console.WriteLine("M\u00e1laga" == "Málaga"); // True
长话短说,您无需执行任何操作。您的琴弦非常好。只需将其存储在数据库中即可!