先看一个测试,看下图:
测试环境:Windows(这个很重要,后面会说)
用Python读取test.txt文件的内容并打印,通过对比UtraEdit里面的内容和open('test.txt').read()打印出来的内容,发现他们竟然杯具的不一样。
Python打印出来的内容怎么被截断了?是Python的Bug?不是,如果你用C++来测试问题依然如此。
Stackoverflow上给出了答案:http://stackoverflow.com/questions/7382838/file-reading-problem/
原来在Windows环境下0X1A有着特殊的含义,0x1A在ASCII码中代表EOF(0x1A == 26 == ctrl-Z == EOF),即当程序以文本模式读取文件内容时,遇到0X1A就会认为文件结束了。
Windows下的type命令测试结果也是如此,如下图:
但在Linux下进行上述测试,内容并没有被截断,如下图:
在Windows下如何解决这个问题呢?
以二进制的方式读取(‘rb’)文件,由于二进制方式的输入输出是一一对应的,字符不会产生变化(字符不再具有ASCII码表中的那些特殊含义)。
再看下面测试:
关于0X1A的更多文章:
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢