我从第三方应用程序接收到一个字符串,但由于编码不正确,我的一部分字符串在西班牙语中看起来像这样:
Acción
而它应该是这个样子的:
Acción
根据这个问题的答案:How to know string encoding in C#,我接收的编码应该已经是UTF-8的,但实际上却被读取成了Encoding.Default(可能是ANSI?)。
我正在尝试将此字符串转换为真正的UTF-8,但其中一个问题是我只能看到Encoding类的一个子集(仅有UTF8和Unicode属性),可能是因为我受限于Windows Surface API。
我已经尝试了一些在互联网上找到的代码片段,但到目前为止没有一个适用于东方语言(例如韩语)的成功示例。
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
我也尝试将字符串提取为字节数组,然后使用 UTF8.GetString:
byte[] myByteArray = new byte[myString.Length];
for (int ix = 0; ix < myString.Length; ++ix)
{
char ch = myString[ix];
myByteArray[ix] = (byte) ch;
}
myString = Encoding.UTF8.GetString(myByteArray, 0, myString.Length);
你们有没有其他的想法我可以尝试一下?
Encoding.Default
返回系统的ANSI代码页。 - SLaks