getstring()返回一个字符串(是UTF-16)

本文关键字:字符串 UTF-16 一个 返回 getstring | 更新日期: 2023-09-27 18:06:24

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

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

getstring()返回一个字符串(是UTF-16)

是的,String总是UTF-16。如果将String转换为String,要么得到相同的字符串,要么丢失数据。

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


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