为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
吃鸡游戏 2019-12-27 10:31:52
我有一个从第三方应用程序收到的字符串,我想在Windows Surface上使用C#以任何语言正确显示它。由于编码不正确,我的一部分字符串在西班牙语中看起来像这样:Acción而它应该看起来像这样:Acción根据关于这个问题的答案: 如何知道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);你们还有其他可以尝试的想法吗?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

如您所知,字符串可以传入,Encoding.Default您可以简单地使用:


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

myString = Encoding.UTF8.GetString(bytes);

您可能还需要记住另一件事:如果您正在使用Console.WriteLine输出一些字符串,那么您还应该编写Console.OutputEncoding = System.Text.Encoding.UTF8;!!! 否则所有utf8字符串都将输出为gbk ...


查看完整回答
反对 回复 2019-12-27
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

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

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

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


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 7404 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信