Kindle 对txt文档中换行符的处理

Kindle是支持txt文档的,但无论是直接使用USB线缆传送或是OTA PUSH的方式,最终txt还是被转化为Amazon私有的azw格式,才能在Kindle上被阅读。虽然Kindle对txt算得上不友好,但txt的通用和便利,仍令人难以舍弃。本文要讨论的是Kindle对txt中换行符\n,\r,空格和制表符\t的处理。

测试环境和步骤如下:

测试环境:

电脑:Windows 7 ,Python 2.6.2

阅读器:Kindle 3 WIFI Only,固件版本:Kindle 3.1(558700031)

测试步骤:

先在Windows 7上使用Python生成标准的txt文档,然后复制一份。分别通过USB和OTA PUSH二种不同的方式传输到Kindle。

用来生成txt文档的Python代码如下:

#!/urs/bin/python
# -*- coding: cp936 -*-

file = open("kindle_test.txt","w")
content1 = "第一行测试\\n效果(所有换行符均放在每行的结尾处)\n第二行测试\\r效果\r第三行测试\\n\\r效果\n\r第四行测试\\r\\n效果\r\n第五行测试\\n\\n效果\n\n第六行测试\\r\\r效果\r\r第七行测试\\n\\r\\n\\r效果\n\r\n\r第八行测试\\r\\n\\r\\n效果\r\n\r\n换行测试完毕。"
content2 = "\n  空格及制表符测试:此行开头进行两个半角空格测试。\n    此行开头进行四个半角空格测试。\n\t此行开头进行一个制表符测试。"
file.write(content1)
file.write(content2)
file.close()
# print content1,content2

运行此代码后最终生成一个名为Kindle_test.txt 的标准文本文件。

上图,是此文档在Windows 7平台使用系统原生的notepad程序打的效果,从中可以的得出如下结论:

\n和\r均被Windows识别为单独的换行符,并且\r\n或者是\n\r表示两个换行符;另外空格和制表符也能完全准确的显示。

上图左是使用USB线缆将文档直接拷贝到Kindle后的效果;上图右则是使用Gmail将同一份文档OTA PUSH到Kindle后的效果。

从上面两张图以及notepad显示的效果图上可以得到如下结论:

1. Kindle系统内置的格式转换软件和Amazon云端的并不是同一套,不然同一个文档不可能产生两种不同的效果。

2. 若从USB线缆向Kindle拷贝txt文档,Kindle内置格式转换规则为: \n, \r均视为单独的换行符,\n后面紧接着的\t被忽略,\n后面紧接着的空格则被缩减了一个,原本2个半角空格变为一个,原本4个半角空格变为3个。

3. 若使用OTA PUSH的方式,Amazon云端格式转换规则为:\r完全被忽略,后面不跟空格的单个\n会被忽略,单个\r\n表示换行,\n\n表示换行外加四个半角空格,\n后面紧跟一个或多个空格仅表示换行(空格被忽略掉),\n\t表示换行外加一个制表符。另外,进行长本文txt文件云端PUSH测试时,\r\n很多时候会被转换成四个半角空格,而不是换行。

总结:为Kindle准备的txt的文档,为保证原有格式请尽量使用USB线缆传输。若准备OTA PUSH,建议使用“\n\n”作为换行符,这样会在下一行的行首多出四个半角空格,但总比让很多段落连一起要强。

补充:为了排除txt文档在使用Gmail上传时被更改,将Gmail发件箱的附件下载与原文件对比没有出入,另外使用QQmail PUSH的时候效果一样。