UTF8.GetString()返回一个字符串(UTF-16)

时间:2016-09-10 14:12:32

标签: c# .net encoding

string(System.String)是UTF-16,但如果我将字符串转换为UTF-8,则Encoding.UTF8.GetString()方法返回AGAIN字符串(UTF-16),并且它是不可能的,因为字符串不是UTF-8。

var foo = Encoding.UTF8.GetString(Encoding.Unicode.GetBytes("hello"));
Console.WriteLine(foo.GetType()); // Prints "System.String"

1 个答案:

答案 0 :(得分:2)

是的,String始终是UTF-16。如果将String转换为String,您将获得相同的字符串或数据丢失。

您可以使用任何可用或自定义编码将String转换为字节数组。在大多数情况下,尤其是编写文件时,您只需告诉编写者或流,您希望 it 使用哪种编码。

如果对UTF-16和UTF-8存在任何混淆,它们都是相同字符集的编码:Unicode。它们之间没有数据丢失;你只需要使用最合适的一个,内存通常为UTF-16,文件和流通常为UTF-8。