上回發表中文編碼解析工具 Ver 1.2後,網友Esther建議再加上GBK-Q, GBK-B的編碼解析。

說實在話,我沒聽過這兩個名詞,但Google了一下馬上晃然大悟,原來指的是我們常在Mail Subject或收件寄件人資料上看見的那種編碼。格式像這樣:
=?x-gbk?q?=B5=C4=B7=AD=D2=EB?=

怎樣,一Show出格式,大家都很有感覺了吧? 這Mail Server為了克服Mail Header只支援7bit字元所想出來用在底層的編碼法,卻常因為Mail Server、Mail Client間的默契不足沒被順利解碼還原露了餡,赤裸裸地在郵件軟體上顯示出來。以前挺常遇到的,但這些年來,郵件伺服器及軟體漸漸聰明了,就不太常再出現。有網友提出表示這還是某些人的痛,而我用Google找了一下,也還看見不少,索性在中文編碼解析工具加入這項新功能(目前只支援Big5與簡體中文,應該夠用了),推出Ver 1.3版,有需要的朋友可以下載回去玩玩。

程式下載

程式下載(Ver 1.32)


Comments

# by sida

有bug喔~ 轉換後 用滑鼠隨便去點下面的UrlEnc 有時候會忽然亂掉 變成其他字@_@

# by Jeffrey

To sida, 試了好一會兒,沒試出你講的問題,看可不可以給我重現問題的操作步驟或是抓一下畫面,我再好好研究一下,謝謝囉。 PS: 底下的UrlEnc可以輸入編碼後的文字,移開焦點後會自動轉換回中文,不知是否與這個功能有關?

# by sida

麻煩請輸入"俊" 這個中文字 轉碼後 把滑鼠移到UrlEnd點一下 然後在把滑鼠點回去中文內容那個地方 "俊"這個字就變了

# by Jeffrey

To sida, 知道你說的問題了。UrlEncode的Big5版會有英文字母出現,而原來的程式會做ToLower(),某些中文字就因為組成字元大寫變小寫而變了調,Yes! 這是個Bug! 謝謝你的通報,我已修正出1.31版也更新了下載連結,請您再試試。

# by EricHuang

很有用的工具,不知道可否分享一下如何將NCR轉回難字的程式片段呢..我的mail是erichuang0901@gmail.com 感謝

# by ego

能否請您寄給我[信件標題解碼]的VBS程式碼 我的mail:ego@tayih-ind.com.tw 謝謝!!!

# by Jeffrey

To ego, 信件標題解碼的部分我是用.NET的Regex, Encoding物件做出來的,VBScript在這方面沒有直接的對應物件,所以我的寫法沒法直接翻成VBScript。你可以考量看看要不要將.NET DLL包成COM+給VBScript呼叫解決問題,不過多了要註冊元件的手續就是了。

# by JoySu

dear sir 因為某種須要,我必須將一段中文字以程式碼轉成如您程 式內urlEnc(Big5)的編碼,然後以querystring的方式傳出,請問轉碼的部份我該如何做呢,可否請您回覆至我的信箱(email: smc@savebooks.net) 這對我非常重要,先感謝您的幫忙

# by Jeffrey

To JoySu, HttpUtility.UrlEncode有一個Overloading可以傳入第二個參數決定語系。http://msdn2.microsoft.com/zh-tw/library/h10z5byc(VS.80).aspx HttpUtility.UrlEncode("中文", System.Text.Encoding.GetEncoding("big5"));

# by CHE

請問下載EncAnalyzer13.zip解開後,只有一個EncAnalyzer13沒有副檔名的檔案。 要如何使用呢?

# by Jeffrey

to CHE, 怪異的很,同一個檔案從備用站台下載是好的: http://blog2.darkthread.net/files/folders/darkthread/entry1081.aspx,大家先去備站取檔,我有時間再來查一下撞鬼的原因。

# by 無所不在

請問一下有關於unicode編碼的問題。 例如:𨀀 這個字的unicode碼是 0x28000 從你的程式查到的是 60 D8 00 DC 也就是說應該是 0xD860DC00 我查了一下編碼規則(http://zh.wikipedia.org/zh-tw/UTF-16 )一這個規則解回來,則是 0x18000 你是否知道如何反解回去?

# by Jeffrey

to 無所不在, 計算Surrogate Pair時,要先減去0x10000。 1.Take the Unicode value of the character and subtract 0x10000 from it. 參考來源: http://zsigri.tripod.com/fontboard/cjk/surrog.html 我想這可以解釋0x28000與0x18000間的差異。

# by 汁豬人

現在幾乎都 UTF-8 當道, "目前只支援Big5與簡體中文,應該夠用了" , 不夠用了, 因為正想要解 utf-8, 沒想到它不能用 @ @

# by Jeffrey

to 汁豬人,呵,本想說這種編碼已經絕跡了(我以為只支援7bit的Mail Server應該都死光了才對),沒想到還是有需求。我想要多加utf-8支援不是難事,你能提供一段utf-8編碼範例讓我驗證解碼結果嗎?

# by 阿信

您好,我嘗試使用URLENC(Unicode) 轉回正常的文字時,發現一個小BUG,當我的地址是"台北市新生南路一段12號"時可以轉成"%u53f0%u5317%u5e02%u65b0%u751f%u5357%u8def%u4e00%u6bb512%u865f"但是這一段卻無法反解析成中文會報錯,我研究一下結果發現是跟數字有關,請問這要如何解呢?

# by Jeffrey

to 阿信, 謝謝您的通報,是Bug!! 我修改了一個Ver 1.32版,請再試試問題是否已解決。https://blog.darkthread.net/Files/EncAnalyzer132.zip

# by Eric

Dear Jeffrey 上方的連結 程式下載(Ver 1.32) 多了%20所以無法下載 以下方的意見 我修改了一個Ver 1.32版 下載回來後解開,只有一個EncAnalyzer132沒有副檔名的檔案。

# by Jeffrey

to Eric, 請改用非IE下載看看。(原因: http://bit.ly/9UW16d )

# by 灭蟑螂

这个很有用,我下载了,多谢

# by 小豬

真謝謝你~我下載了~很有用呢!

# by 阿信

您好想請問您一個問題,我研究了好久查不出原因,可否請你教我一下,謝謝 我們用 HttpUtility.UrlEncode('萊爾富北縣興南店貳', Encoding.GetEncoding(950))會產出 %b5%dc%ba%b8%b4I%a5_%bf%a4%bf%b3%abn%a9%b1%b6L 但是我接收到人家的QueryString則是 %B5%DC%BA%B8%B4%49%A5%5F%BF%A4%BF%B3%AB%6E%A9%B1%B6%4C 所以無法HttpUtility.UrlDecode正確反解回中文 不知道要怎麼解決

# by Jeffrey

to 阿信, UrlDecode時是否有指定Encoding? 經測試 HttpUtility.UrlDecode("%B5%DC%BA%B8%B4%49%A5%5F%BF%A4%BF%B3%AB%6E%A9%B1%B6%4C", Encoding.GetEncoding(950)); 可解出"萊爾富北縣興南店貳"。

# by 阿信

謝謝您,我太執著在Encoding後長得不一樣,以為是這個部分造成的問題。 卻忽略了使用Request("SO")時會被先用UTF-8 DECODE 改用Request.URL.Query自己抓取在解碼就OK了,謝謝您

# by 卡卡西

您好 我想用 \u4e16;\u754c\u60a8\u597d 作解碼 放在 url unicode ,他會出顯警告訊息「 \u4e16;\u754c\u60a8\u597d]不是有效的UrlEncode編碼! 」 可以在多一種解碼模式嗎?

# by Jeffrey

to 卡卡西,你提供的範例要轉成%u4e16%u754c%u60a8%u597d才符合UrlEncode的規範,\unnnn的寫法應是C#中的Unicode字元表示法[ http://msdn.microsoft.com/zh-tw/library/aa664669(v=vs.71).aspx ],謝謝回饋,未來會考慮加入。 現階段的替代做法是在C#中用類似Console.WriteLine("\u4e16;\u754c\u60a8\u597d");的做法即可轉換。(或是在LinqPad中直接寫"\u4e16;\u754c\u60a8\u597d"就可立即揭曉, http://www.linqpad.net/ )

# by Test

可以請您加上「中文網址轉換成UTF-8編碼」的功能嗎?因為下面的程式是要上網才能用的,感謝! 請參考:http://werdna1222coldcodes.blogspot.tw/2008/12/online-urlencoderutf-8.html

# by paggyyen

them

# by Leo

Dear Sir 因需要分析信件標題 能否請您寄給我[信件標題解碼]的程式碼參考 mail:leolai@n**馬賽克**b.com.tw 謝謝您

# by Jeffrey

to Leo, 請查收 http://blog.darkthread.net/post-2013-04-11-decode-mail-subject.aspx。(另外,已幫你留言中的Email打上馬賽克,以免外流)

# by ChrisTorng

工具已經無法下載,是轉換到新版疏漏了嗎?

# by Jeffrey

to ChrisTorng, 感謝通報,已修正。

# by ChrisTorng

謝謝您。前面留言有好多個 <p>,也是轉換產生的問題吧...

# by Yoyo

可以提供 choco版本的嗎? 或是我也可以幫忙包

# by Jeffrey

to Yoyo, 感謝回饋,考量之後,我打算將這個專案開源並轉成Web版好了。

Post a comment