[問題] PTT編碼

作者: sdriver (日夜顛倒)   2014-08-20 12:12:51
其實不知道該發在哪個板…但我記得GOOGLE相關問題時有看過LINUX板的文章,
所以就發在這了
最近在寫個讀PTT資料的程式,光在登入畫面我就不行了,讀出來的都是亂碼。經過無數
小時的努力,才發現PTT是用BIG5-UAO編碼。好,知道編碼就行。還好網路上也找的到
BIG5-UAO轉UNICODE的表(跟英文比要找中文資料真是無敵超級難,而且感覺有隨時沒資
料的可能)。
第一個困難點是,當我一個byte一個byte讀登入畫面的資料時,發現ASCII
和BIG5-UAO是混在一串的,ASCII一個字是1 byte,BIG5-UAO一個字是2 bytes。
但還好他們二個低位元的數值沒有重覆(在表裡面是這樣的),我可以先只讀一個位元
來判斷目前的值是不是ASCII,如果是就直接顯示,不是的話就和下個位元合在一起去
查BIG5-UAO轉UNICODE的表。
但傷腦筋的來了,讀到後來資料裡竟然有不在BIG5-UAO也不是ASCII的位元,請問
我該怎麼辦? 這個怪東西是 0x50A1。難道我哪裡搞錯了嗎?
作者: filiaslayers (司馬雲)   2014-08-20 14:03:00
pcman是不是開源碼的?你可以翻一下他們的sourcecode去看他們怎麼處理這個問題
作者: Cypresslin (啊哈哈~~)   2014-08-20 14:17:00
我猜是一字雙色造成的
作者: Adama (So Say We All.)   2014-08-20 15:57:00
ptt有輸出utf-8耶 帳號後打, 或直接ssh bbsu@ptt.cc
作者: soem (流水)   2014-08-20 21:10:00
一字雙色就是把BIG5的2byte之間插色碼...
作者: Tetralet (Tetralet)   2014-08-20 22:40:00
那個編碼怪怪的是因為... 0x50 是 P 這個字??
作者: prismwu   2014-08-20 22:53:00
你先用utf-8試試看 不行的話我再回文 最近剛好也遇過這個
作者: abcdefghi   2014-08-20 23:43:00
輸出0x50, 把0xa1和下一個byte合成big5懶人法, 直接用iconv/icu把big5字串轉成utf8字串
作者: carylorrk (carylorrk)   2014-08-21 00:47:00
ssh 上 PTT 的站出來!
作者: AceIan (ccc)   2014-08-21 11:52:00
ssh+1
作者: mstar (Wayne Su)   2014-08-21 12:07:00
不知道 pcmanx 能不能增加支援 ssh....
作者: HamalAri (哈馬‧阿里)   2014-08-21 12:47:00
pcmanx 一直都支援 ssh ,只是要改設定檔
作者: Bencrie   2014-08-21 12:52:00
ssh 連線跟密技一樣 XD
作者: ducktung (彤彤)   2014-08-21 16:07:00
ssh+1
作者: redbxh (林佳)   2014-08-21 20:41:00
SSH+1
作者: mjsg (mjsg)   2014-08-22 02:46:00
當然用 ssh ..
作者: newversion (海納百川)   2014-08-22 10:16:00
pietty +1
作者: pcchou (pcchou)   2014-08-22 13:54:00
請愛用ssh bbsu@ptt.cc XD
作者: mgdesigner (機槍設計師)   2014-08-22 15:15:00
ssh++
作者: carylorrk (carylorrk)   2014-08-24 06:39:00
我覺得帳號後面打, 這個纔是密技吧,我現在才知道 XD
作者: ymzk (電磁居士)   2014-08-24 10:50:00
登入時帳號後加',' 像你帳號原本sdriver改sdriver,進去後自然會變UTF-8
作者: zack2004 (~夜晚的星空~)   2014-08-24 20:51:00
luit -encoding big ssh bbs@ptt.cc
作者: prismwu   2014-08-25 05:46:00
telnet當然是騙別人用(?

Links booklink

Contact Us: admin [ a t ] ucptt.com