3

我已经找到了这个问题的答案,建议如下:

byte[] utfBytes = utf8.GetBytes(Message);  
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);  
string msg = iso.GetString(isoBytes);

通过这种方式,我可以将 utf8 编码的字符串转换为 iso 编码的字符串。
我需要转换为 utf8,所以转换应该是这样的:

byte[] utfBytes= Encoding.Convert(iso, utf8, utfBytes);  

我想将收到的任何类型的字符串转换为 Utf8。有没有办法在不指定起始字符集的情况下进行类似的转换?
另外,有没有办法识别起始字符集?
因为在 VisualStudio 2012 中,我遇到了一些编码问题。

4

2 回答 2

2

您必须指定原始编码,因为没有可靠的方法来确定它。请参阅如何检测文本文件的字符编码?有关各种编码的详细答案以及为什么无法自动确定它们。

于 2013-10-21T11:56:42.877 回答
1

没有办法(可靠地)检测编码。编码不存储在string对象中,因为它始终是 UTF-16,或者实际上,如果您使用其他东西,则以字节表示形式存储。

您将需要手动存储字符集并使用它来转换为另一种编码。

这个问题中,有几个示例可以尝试检测某些编码。

这是来自The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets 的相关引述(没有借口!)

在不知道它使用什么编码的情况下拥有一个字符串是没有意义的。

于 2013-10-21T12:02:02.410 回答