c# - 如何在 C# 中将字符串转换为 UTF-8?

标签 c# string encoding utf-8 character-encoding

我有一个从第三方应用程序收到的字符串,我想在我的 Windows Surface 上使用 C# 以任何语言正确显示它。

由于编码不正确,我的一段字符串在西类牙语中看起来像这样:

Acción

它应该是这样的:

Acción

根据这个问题的回答: How to know string encoding in C# ,我收到的编码应该已经是 UTF-8,但它是在 Encoding.Default 上读取的(可能是 ANSI?)。

我正在尝试将此字符串转换为真正的 UTF-8,但其中一个问题是我只能看到 Encoding 类的一个子集(仅限 UTF8 和 Unicode 属性),可能是因为我仅限于 Windows表面 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 形式传入,您可以简单地使用:

byte[] bytes = Encoding.Default.GetBytes(myString);
myString = Encoding.UTF8.GetString(bytes);

另一件事你可能需要记住:如果你正在使用 Console.WriteLine 输出一些字符串,那么你也应该写 Console.OutputEncoding = System.Text.Encoding.UTF8;!!!或者所有的utf8字符串都会输出为gbk...

关于c# - 如何在 C# 中将字符串转换为 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057434/

相关文章:

java - 在 IntelliJ IDEA 中执行的 Maven Selenium WebDriver 项目中出现编码警告

c# - 为什么 SecureString 解密在可执行文件之间给出不同的结果?

java - 分割字符串java返回值

c# - EF 核心中的自引用错误 : the insert statement conflicted with the foreign key same table constraint

string - UIWebView 崩溃从 HTML 加载链接

java - Java 中重复字符串值的字符串连接

ruby - 在 Ruby 中用 ASCII 字符替换所有非 ASCII 字符的最简单方法是什么?

javascript - 在 URL 中使用 Crockford 的基数 32 作为 ID?

c# - 如何以编程方式获取 MySQL Connector/NET 驱动程序版本?

c# - 我们是否可以在.NET 2.0 中使用WPF?