這是一個之前在我一個使用 Big5 編碼的網站上遇到的問題
忘記說,這是一個 Classic ASP 的網站
至於為什麼網站還要用 Big5 呢? 不要問,很恐怖
那時候想在某個 Page 上放上一個含有 Facebook 網址的 QR Code
但發現跑出來的圖片怎麼怪怪的,掃也掃不出來
搞了老半天才發現原來是編碼的問題
(其實真正的原因我也不清楚,似乎是 Google 不接受 Big5?)
假設我們的 URL 是
https://www.facebook.com/中文測試123/
使用 api 的網址就是
https://chart.googleapis.com/chart?chs=120x120&cht=qr&chl=https://www.facebook.com/中文測試123/
當你把這串文字放到 Page 上,網站就會自動幫你編碼成
https://chart.googleapis.com/chart?chs=120x120&cht=qr&chl=https://www.facebook.com/%A4%A4%A4%E5%B4%FA%B8%D5123/
這時候是怎麼掃都沒反應
所以要在把資料 (無論是從DB或寫死) 給 Google 之前轉成 UTF-8
以下是在網路上找到 vbscript 的程式碼,
當初有把網址加到我的最愛,但最近已經失效,最後我還是會把連結給出來
function convertBig5ToUTF8(sourceURL)
dim i,utf8URL,tmp,encodingStr
for i=1 to Len(sourceURL)
tmp = mid(sourceUrl, i, 1)
if asc(tmp) < 0 or asc(tmp) > 128 then '將ascii碼在1~128以外的字元當成中文編成utf8
Session.CodePage = "65001" '先將網頁設成utf8
encodingStr = Server.UrlEncode(tmp) '將中文編成utf8
Session.CodePage = "950" '再將網頁設為Big5
utf8URL = utf8URL & encodingStr
else
utf8URL = utf8URL & tmp
end if
next
convertBig5ToUTF8 = utf8URL
end function
經過轉換後,網址就會變成
https://chart.googleapis.com/chart?chs=120x120&cht=qr&chl=https://www.facebook.com/%E4%B8%AD%E6%96%87%E6%B8%AC%E8%A9%A6123/
ref:
asp big5 encoding to utf8 @ Itano Tomomi :: 痞客邦 PIXNET ::
另外找到一篇也是參考上面這一篇的,異曲同工
asp網頁編碼big5->utf8處理辦法
沒有留言:
張貼留言