顯示具有 URL 標籤的文章。 顯示所有文章
顯示具有 URL 標籤的文章。 顯示所有文章

2012年8月9日 星期四

[Asp].中文網域 doamain name (Punycode)

客戶反應一個問題, 要提供一個 URL在網頁裡, 由於包含中文字, 所以中文字被被編碼了.

要連到 URL:

https://law.全國法規.tw/

編修存檔後,透過 IE 瀏覽器, URL 點下去後變成(無法顯示網頁), 神奇的 google  chrome 可以連!

全國法規, UTF-8 編碼做 URLEncode 如下, IE 不能連.
https://law.%E5%85%A8%E5%9C%8B%E6%B3%95%E8%A6%8F.tw/

全國法規, Big5 編碼做 URLEncode 如下, IE 不能連.
https://law.%A5%FE%B0%EA%AAk%B3W.tw/

https://law.%A5%FE%B0%EA%AA%6B%B3%57.tw/


查了一下, 原來中文網域名要轉成 punycode 才行,
隨手下載了一個 ASP 版的轉換程式.
Punycode / IDN conversion code for classic ASP
http://www.simpledns.com/outbox/idn-convert-asp.zip

剛好遇到 "規" 這個字在使用 ASCW( ) 函數是會變成負數. 會出問題, trace 一下程式碼, 改改修修, 弄不出來, 正確解答應該轉換成:
https://law.xn--15q40leqvqi0a.tw/

可是我跑出來的結果有出入, 15q40l 變成 15q50l 實是在很無言, 又看不懂程式在做什麼. 於是改用 .net 來解決. 隨手寫了一個 .net 的 COM+. 最後當然是 Encode 轉換成功, 測試用的程式碼如下:



如果您的 IE 想讓 URL 從 Punycode 的符號變成中文字的話, 需要這樣子設定.





相關文章:
如何利用 IE 或 Firefox 查詢中文域名轉碼(Punycode)
http://blog.miniasp.com/post/2011/07/07/How-to-use-IE-and-Firefox-query-Punycode.aspx

Punycode
http://anferneehardaway.pixnet.net/blog/post/4946513-punycode

[Asp] Server.URLEncode 和 encodeURIComponent 的差別
http://maxtellyou.blogspot.tw/2012/07/asp-serverurlencode-encodeuricomponent.html


使用ASP呼叫C#寫的COM元件
http://maxtellyou.blogspot.tw/2012/03/aspccom.html

如何用 C# 開發的 DLL 讓 VB6 可以使用
http://smilelight-tw.blogspot.tw/2011/06/c-dll-vb6.html

2012年7月20日 星期五

測試IIS 的 URL 的 GET 模式可以傳多少變數內容

之前開發了一個功能, 是彈出新視窗來選取單位, 選取的部份是透過 javascript 的 opner 來存取, 長度上面不會有問題, 但接下來的分頁, 排序或匯出功能都是透過 URL 來傳遞, 企畫問我那不修改程式的情況下, 最多可以勾選多少個單位?


我的情況是每一個單位長度9碼,還會有一個逗號做間隔, 每一筆是總共占掉10個 bytes, 假設 deptID(單位代碼) 有 510筆, id 變數內容有 5100 bytes(510筆 x 10 bytes), 整個 queryString 因為還要加上 "id=" 的這3個 bytes, 所以是 5103 bytes.



程式碼, 增加到 511筆時:


就到 Web Server 的極限值了, deptID 的長度應該要到 5110 bytes 可是只拿到 5102 bytes, queryString 應該是 5113 bytes, 可是只拿到 5105 bytes.


結論: 以一個單位占9碼來說, 大約可以傳500筆的單位資料在 URL 裡.


附註: 不一樣的 Web Server 都會有落差, 有尤其是 Windows Server 2008 的 IIS 7, 預設值很小...



相關文章:
IIS6 遇到 URL 太長造成 Bad Request (Request Header Too Long)
http://maxtellyou.blogspot.tw/2012/06/iis6-url-bad-request-request-header-too.html


Error message when you visit a Web site that is hosted on a server that is running Internet Information Services 7.0: "HTTP Error 404.10 - REQUEST_HEADER_TOO_LONG"
http://support.microsoft.com/kb/942077/

Facebook 留言板