網友建議我的中文編碼解析工具應該要加上UTF-8的URL Encoding,讓我驚覺自己的孤陋寡聞。

當然,背後是有故事的... 前些時候,朋友跟我在討論在T-SQL中實作UrlEncode的方法。UDF寫出來了,卻發現不能用! 最後才搞清楚原來提供Web Interface的廠商,採用的是UTF-8的UrlEncoding,也就是"新增"要轉成%e6%96%b0%e5%a2%ae的格式,我用UDF轉出的%u65b0%u589e格式無法被解析。當時我認定在IE、Firefox中用Javascript escape()轉出的是%u65b0這種Unicode格式,舊時代ASP的UrlEncode則會吐出%b7%73這種BIG5格式,從來沒看過有人用這種"UTF-8式的UrlEncoding",這廠商會不會太孤僻自閉了點?

今天收到網友的留言,才驚覺還真有人在使用這種格式呢!!  

沒看過不代表沒有,不知道不代表不存在! 面對技術議題,永遠要保持謹慎的態度與敬畏的心,才不會淪為別人眼中臭屁又愛說大話的死老頭。

好了,吾日三省吾身時間結束。中文編碼解析工具1.2版來了,沒啥大改革,就是多了UTF-8的UrlEncoding。

 

程式下載

補充一下在.NET中,可以用System.Web.HttpUtility.UrlEncode(str, Encoding.UTF8)的方式輕鬆轉出UTF-8式的UrlEncoding,但如果要轉%u65b0這種格式,可不是用HttpUtility.UrlEncode(str, Encoding.Unicode),而是用另一個Method HttpUtility.UrlEncodeUnicode(str)。


Comments

# by Esther

關於中文編碼解析, 除了上面所列之外,常見的還有Gbk-Q 和Gbk-B, 查了相關的中文編碼解析工具,仍未將這兩種中文編碼列入。 現在只能靠「土法煉鋼」自行轉碼...= =" 不知站長大人是否有考慮增列?

# by Jeffrey

To Esther: 我在中文編碼解析工具1.3加入Mail Subject編碼解析的功能, Check it out!

# by sida

有時候滑鼠點下面的UrlEnc 裡面的資訊會忽然跑掉耶>< 然後上面的中文也就變了

# by 武雄

請問如何把中文轉成UTF 可以透露規則嗎?

# by Jeffrey

to 武雄,字串變數在.NET內部一律以Unicode(UCS2)方式保存,只有要轉化成二進位資料時(例如: 存成檔案、透過網路傳送)時,才有選擇Encoding的問題。換句話說,也就是可以用不同的Encoding將String變成byte[],以UTF-8為例,你可以這樣寫: byte[] buff = System.Text.Encoding.UTF8.GetBytes("中文");

# by andy199113

請問如果要用編碼反解回來該怎麼做呢? 不知道是否能在下個版本增加這個功能? 謝謝

# by Jeffrey

to andy199113, 程式支援由UrlEnc, NCR編碼反解回中文,方法是在那些欄位輸入編碼,再按一下Tab鍵就會解碼,不知是否是你要的?

# by andy199113

謝謝 我就是要這功能^^

# by yu

good

Post a comment


45 + 10 =