最近在看io相关的知识,遇到一些小问题,以下有例子来说明问题:
比如:
12345 是一个十进制数
根据ASCII码找到是 :
二进制 00110001 00110010 00110011 00110100 00110101
十进制4950515253
十六进制 0x310x320x330x340x35
文件以ansi编码保存为:
文件以unicode编码保存:
文件以utf-8编码保存:
问题一:为什么以unicode保存是这样的(不是应该3100 3200 3300 3400 3500就完了吗),ff fe是个什么鬼呢?不是很明白。。。
问题二:以字节流读取的话,如果读取的是文本文件,应该要设置编码的吧?
问题三:字符流的话,是怎么读取的,比如我现在文件现在以ansi保存,那里面应该是 31 32 33 34 35。如果以字符流读的话怎么读呢?我看到网上说
可我明明是以ansi保存的,哪来的unicode的呢?难道读的时候会转为unicode,然后再去读???可以讲下详细的过程吗??
谢谢各位大神!
问题一:
FFFE -> BOM -> Byte order mark 字节序标识
字节顺序标记(英语:byte-order mark,BOM)是位于码点U+FEFF的统一码字符的名称。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字符串编码时,这个字符被用来标示其字节序。它常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的记号。
参见:
字节顺序标记
问题二:
是的。
问题三:
读取时设置文件编码,如: