在这里谈谈文件的编码格式,这有助于我们更好的实现文件的操作(这里仅列举txt格式的编码)。
先用记事本建立一个新文件,我们可以随意输入几个字符,例如abcd,接着再按一下回车,保存退出。记事本默认保存编码是ANSI编码,就是ASCII码,我们再打开文件,分别另存为Unicode编码,Unicode big endian编码和UTF-8。然后分别用UltraEdit打开四个文件,按Ctrl+H查看16进制代码,可以看到以下内容:
ANSI:
00000000h: 61 62 63 64 0D 0A
使用ASCII码 每个字符一个字节 最后的0D回车符 即把光标移到本行开头 0A表示换行符 即把光标移到下一行
Unicode:
00000000h: FF FE 61 00 62 00 63 00 64 00 0D 00 0A 00
使用ASCII码 每个字符两个字节 后一个字节用0填充 文件开头有两个字节是FF和FE 注意读文件的时候要跳过
Unicode big endian:
00000000h: FE FF 00 61 00 62 00 63 00 64 00 0D 00 0A
使用ASCII码 每个字符两个字节 前一个字节用0填充 文件开头有两个字节是FE和FF 刚好和Unicode编码一个字符内两个字节的位置对调
UTF-8:
00000000h: EF BB BF 61 62 63 64 0D 0A
使用ASCII码 每个字符一个字节 文件开头有三个字节 EF BB BF 注意读文件的时候要跳过
由此 不管读取什么类型的文件 都要注意
1. 单个字符的位数
2. 文件开头结尾的标志位字节数
3. 回车键的字节数