我相信如果我创建一个字符串,它默认为UTF8,但是如果字符串是在其他地方创建的,我想在处理之前更加安全并检查它的编码是什么我看不到任何简单的方法来做到这一点使用字符串或Encoding类。我错过了什么或者C#字符串总是UTF8,不管是什么?
答案 0 :(得分:7)
C#中的字符串(好吧,.NET)没有有编码,有效......或者你可以将它们全部视为UTF-16,因为它们是{{{ 1}}值,为UTF-16代码单元。
但是,通常,当您从字符串转换为二进制格式(例如,在套接字或文件中)时,您只需要关心编码。此时,您应该明确指定编码 - 字符串本身没有这个概念。
“默认”为UTF-8的唯一方面是有很多.NET API被重载以接受或不接受编码,如果没有指定编码,则使用UTF-8。 File.ReadAllText
就是一个例子。但是,在阅读文件后,“从UTF-8文件中读取的文本”和“从Big5文件中读取的文本”等之间没有区别。