[問題] telnetlib文字編碼問題(python3)
各位前備好
近日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是不會停止後報錯
但是貼出來的文都變成亂碼
請問這種狀況有解法嗎?
謝謝!
--
推
03/29 20:32,
03/29 20:32
推
03/29 20:32,
03/29 20:32
推
03/29 20:32,
03/29 20:32
推
03/29 20:32,
03/29 20:32
推
03/29 20:32,
03/29 20:32
推
03/29 20:32,
03/29 20:32
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.92.63.147
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1465867582.A.70B.html
→
06/14 09:40, , 1F
06/14 09:40, 1F
Traceback (most recent call last):
File "py_bbs2.py", line 78, in <module>
tn.write(line.encode('big5'))
UnicodeEncodeError: 'big5' codec can't encode character '\u2554' in position
5: illegal multibyte sequence
※ 編輯: aa4live (140.92.63.147), 06/14/2016 09:52:12
→
06/14 09:58, , 2F
06/14 09:58, 2F
→
06/14 09:59, , 3F
06/14 09:59, 3F
謝謝!
不知道可以這樣忽略XD
雖然文章會有缺漏一點
但是整體而言備份的效果有做到就好....
感恩~
推
06/14 11:45, , 4F
06/14 11:45, 4F
→
06/14 11:46, , 5F
06/14 11:46, 5F
推
06/14 11:52, , 6F
06/14 11:52, 6F
換成CP950後已沒有問題
之前問題主要出在表格的框線上Orz...
感謝~
→
06/14 12:50, , 7F
06/14 12:50, 7F
→
06/14 12:51, , 8F
06/14 12:51, 8F
生txt檔的程式是直接拿別人的來用
看不出是什麼編碼
不過我再windows的環境執行他應該會是預設的CP950(?
但是CP950能顯示日文感覺一整個怪
(wiki說CP950不含日文,是wiki沒更新還是根本就是我誤會?)
→
06/14 18:12, , 9F
06/14 18:12, 9F
→
06/14 18:12, , 10F
06/14 18:12, 10F
推
06/14 20:25, , 11F
06/14 20:25, 11F
→
06/14 20:25, , 12F
06/14 20:25, 12F
推
06/14 23:39, , 13F
06/14 23:39, 13F
→
06/14 23:40, , 14F
06/14 23:40, 14F
找了一個轉出來含日文的檔案用chardet來測試
結果是這樣
{'encoding': None, 'confidence': 0.0}
win7記事本開起來也看不到日文
但是讀檔貼到PTT2個板上顯示是正常的
讀檔是用投兩位推文的方法
ftxt = open("./BS2/%s"%file,"r",encoding='cp950', errors='ignore')
為什麼讀成cp950之後貼到PTT2上面會正常rrrrrr
因為開檔的時候ignore了這些日文的編碼
可是直接貼到P2上他認的出來?
這樣想不知道對不對0.0
※ 編輯: aa4live (140.92.63.147), 06/15/2016 09:43:02
→
06/15 09:45, , 15F
06/15 09:45, 15F
http://tinyurl.com/gpd9je3
測試用檔案在這
放在google硬碟上他預覽是正常能顯示的0.0
→
06/15 12:08, , 16F
06/15 12:08, 16F
→
06/15 15:46, , 17F
06/15 15:46, 17F
推
06/15 16:26, , 18F
06/15 16:26, 18F
→
06/15 16:27, , 19F
06/15 16:27, 19F
感謝點破盲點XD
→
06/16 00:10, , 20F
06/16 00:10, 20F
→
06/16 00:17, , 21F
06/16 00:17, 21F
→
06/16 00:17, , 22F
06/16 00:17, 22F
真是一個突破盲點!
這樣就不用去管編碼問題了
→
06/16 01:06, , 23F
06/16 01:06, 23F
→
06/16 01:08, , 24F
06/16 01:08, 24F
再次感謝以上各位大大留言<(_ _)>
※ 編輯: aa4live (140.92.63.147), 06/16/2016 14:45:31
→
06/16 21:17, , 25F
06/16 21:17, 25F
→
06/17 00:09, , 26F
06/17 00:09, 26F
→
06/17 02:43, , 27F
06/17 02:43, 27F
Python 近期熱門文章
PTT數位生活區 即時熱門文章