尽管有原始类型,我如何强制将每个字符串编码为UTF8?

时间:2013-10-21 11:49:55

标签: c# encoding utf-8

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

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中,我遇到了一些编码问题。

2 个答案:

答案 0 :(得分:2)

您必须指定原始编码,因为没有可靠的方法来确定它。请参阅How to detect the character encoding of a text file?以获取有关各种编码的详细答案以及无法自动确定的原因。

答案 1 :(得分:1)

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

您需要手动存储字符集并使用它转换为其他编码。

this question中,有几个例子可以尝试检测某些编码。

以下是The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

的相关引用
  

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