首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C#中将字符串转换为UTF-8?

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

Stack Overflow用户
提问于 2012-12-27 23:56:20
回答 7查看 502.5K关注 0票数 169

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

由于编码错误,我的一段字符串在西班牙语中如下所示:

访问权限n

然而,它应该看起来像这样:

Acci

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

我试图将这个字符串转换为真正的UTF-8,但其中一个问题是我只能看到Encoding类的一个子集(仅限UTF8和Unicode属性),这可能是因为我受限于windows surface API。

我已经尝试了一些我在互联网上找到的代码片段,但到目前为止,它们还没有成功用于东方语言(即韩语)。下面是一个例子:

代码语言:javascript
复制
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);     

我还尝试将字符串提取到一个字节数组中,然后使用UTF8.GetString:

代码语言:javascript
复制
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);

你们还有没有其他想法可以让我试试?

EN

回答 7

Stack Overflow用户

发布于 2012-12-28 00:15:31

正如您所知道的,字符串将以Encoding.Default的形式传入,您可以简单地使用:

代码语言:javascript
复制
byte[] bytes = Encoding.Default.GetBytes(myString);
myString = Encoding.UTF8.GetString(bytes);

另一件你可能必须记住的事情是:如果你使用Console.WriteLine输出一些字符串,那么你也应该写Console.OutputEncoding = System.Text.Encoding.UTF8;!否则所有的utf8字符串都将输出为gbk...

票数 295
EN

Stack Overflow用户

发布于 2012-12-28 00:30:59

代码语言:javascript
复制
string utf8String = "Acción";
string propEncodeString = string.Empty;

byte[] utf8_Bytes = new byte[utf8String.Length];
for (int i = 0; i < utf8String.Length; ++i)
{
   utf8_Bytes[i] = (byte)utf8String[i];
}

propEncodeString = Encoding.UTF8.GetString(utf8_Bytes, 0, utf8_Bytes.Length);

输出应如下所示

Acci

day?™s显示当天的

调用DecodeFromUtf8();

代码语言:javascript
复制
private static void DecodeFromUtf8()
{
    string utf8_String = "day’s";
    byte[] bytes = Encoding.Default.GetBytes(utf8_String);
    utf8_String = Encoding.UTF8.GetString(bytes);
}
票数 22
EN

Stack Overflow用户

发布于 2012-12-27 23:58:39

您的代码正在读取一系列UTF8编码的字节,并使用8位编码对它们进行解码。

您需要修复该代码以将字节解码为UTF8。

或者(不是理想的),您可以将错误的字符串转换回原始的字节数组-通过使用不正确的编码进行编码-然后将字节重新解码为UTF8。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14057434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档