[英]What unicode encoding (UTF-8, UTF-16, other) does Windows use for its Unicode data types?
存储在Windows内存中的值始终为UTF-16 little-endian。 但那不是你所说的 - 你在看文件内容。 Windows本身不指定文件的编码,而是将其留给单个应用程序。
您在文件开头看到的0xfe 0xff是字节顺序标记或BOM 。 它不仅表明该文件很可能是Unicode,而且它告诉您Unicode编码的哪种变体。
0xfe 0xff UTF-16 big-endian
0xff 0xfe UTF-16 little-endian
0xef 0xbb 0xbf UTF-8
除非您知道如何编写,否则应将具有BOM的文件假定为8位字符。 这仍然没有告诉你,如果它是UTF-8或其他一些Windows字符编码,你只需要猜测。
您可以使用记事本作为如何完成此操作的示例。 如果文件有BOM,那么记事本将读取它并适当地处理内容。 否则,您必须使用“编码”下拉列表自行指定编码。
编辑:Windows文档没有更具体的编码原因是Windows是Unicode的早期采用者,当时每个代码点只有一个 16位编码 。 当确定65536个代码点不合适时,代理对被发明为扩展范围的方式,并且UTF-16诞生了。 微软已经使用Unicode来引用他们的编码而且从未改变过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.