網友建議我的中文編碼解析工具應該要加上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

# by asd516888

我用老式的大AT接頭的條碼槍讀出香菸條碼 82 C1 B4 B7 B1 B1 B5 B8 B8 B1 B8 B0 B8 B0 B5 83 這裡面82 C1因該是前置碼 中間的有B的都去除掉就是那條碼的數字 最後面的83因該是結束碼 那請問一下這到底是哪一種編碼方式?

# by Jeffrey

to asd516888,條碼有自己的編碼規則 https://zh.wikipedia.org/zh-tw/%E6%9D%A1%E5%BD%A2%E7%A0%81 你可以靠特徵去判斷是哪一種,像是 39 碼是的兩側是二細二粗一細,再去查規格。

# by asd516888

53 34 30 33 33 31 30 30 30 37 36 35 36 35 0D 這段中的34 30 33 33 31 30 30 30 37 36 35 36 35 這在ASCII裡可以對照出來是4033100076565 那我的問題是在這段 B4 B7 B1 B1 B5 B8 B8 B1 B8 B0 B8 B0 B5 他數字前面都有個B 可是我想知道他是哪種碼來表示數字的 請問有對照表嗎?

Post a comment