[问题] telnetlib文字编码问题(python3)

楼主: aa4live (Horse)   2016-06-14 09:26:19
各位前备好
近日BS2要关站
想用python写一个贴文机器
把备份下来的txt文档贴到ptt2的个板上
但是在文字编码上出了问题
以下是贴文部分的code
读资料夹档案
for dirPath, dirNames, fileNames in os.walk("./BS2/"):
读档
for file in fileNames:
print (file)
ctrl+p进入发文画面
tn.write('\x10'.encode('ascii'))
time.sleep(1)
tn.write("\r\n".encode('big5'))
time.sleep(1)
输入文章标题
tn.write(file.encode('big5'))
time.sleep(1)
tn.write("\r\n".encode('big5'))
time.sleep(1)
开启备份txt档并写入
ftxt = open("./BS2/%s"%file,"r")
lines = ftxt.readlines()
for line in lines:
tn.write(line.encode('big5')) <==主要问题在这列
tn.write("\r\n".encode('big5'))
ftxt.close()
等同ctrl+x 文章存盘贴出
tn.write('\x18'.encode('ascii'))
time.sleep(1)
tn.write("s\r\n0\r\n\r\n".encode('big5') )
time.sleep(1)
tn.write('\x0C'.encode('ascii'))
time.sleep(1)
问题描述:
如果文章中有用到一些特殊字符(例如表格)
big5就吃不进去(会找不到编码然后程式停止报错)
如果那边编码使用utf-8是不会停止后报错
但是贴出来的文都变成乱码
请问这种状况有解法吗?
谢谢!
作者: alibuda174 (阿哩不达)   2016-06-14 09:40:00
错误讯息?嗯,开档时加上参数errors='ignore'舍弃那些字符吧要不然就要自己转换
作者: kaichan   2016-06-14 11:45:00
可以试一下 "cp950" 而不是 "big5"。像“碁”这个字 cp950 可以转,big5 不能转你的这个字也可以用 cp950。 "\u2554".encode('cp950')
作者: uranusjr (←這人是超級笨蛋)   2016-06-14 12:50:00
如果是 BBS 的话通常用 big5-hkscs 可以搞定其实关键是你的档案本身是用什么编码存的...CP950 确实不含日文, 我觉得你应该先确实知道它用的编码最简单的方法装个 chardet 就可以试着侦测
作者: os653   2016-06-14 20:25:00
cp950 不含日文没错,你有灌 Unicode 补完计画?有灌的话在 console 能显示日文,但是是会有问题的日文
作者: eight0 (欸XD)   2016-06-14 23:39:00
作者: alibuda174 (阿哩不达)   2016-06-15 09:45:00
可以直接提供档案吗?
作者: uranusjr (←這人是超級笨蛋)   2016-06-15 12:08:00
这个档案我用 Big 5 HKSCS 可以正常显示
作者: alibuda174 (阿哩不达)   2016-06-15 15:46:00
请问为什么你的档案编码是Big5-HKSCS?香港人?
作者: eight0 (欸XD)   2016-06-15 16:26:00
话说既然 tn.write 吃 bytes,直接把档案读成 bin 再喂给它就行了吧?
作者: s860134 (s860134)   2016-06-16 00:10:00
印象中 Big 5 HKSCS 与 Big5-UAO 有些关联但是你说要转贴到PTT2 用 eight0 的方法应该蛮不错的不要尝试去 encode 直接 byte 写 byte 读
作者: uranusjr (←這人是超級笨蛋)   2016-06-16 01:06:00
s860134: UAO 有一部分编码是照抄 HKSCS 的, 包括假名而 HKSCS 那部分其实是照抄古早的倚天系统用的编码表
作者: alibuda174 (阿哩不达)   2016-06-16 21:17:00
请问,你不管编码问题的作法,有成功转贴到ptt2吗?
楼主: aa4live (Horse)   2016-06-17 00:09:00
有成功喔!
作者: s860134 (s860134)   2016-06-17 02:43:00
BBS 都是 BIG-UAO 编码,telnet 本身就是吃 byte 输入的

Links booklink

Contact Us: admin [ a t ] ucptt.com