從昨天祐陞說Safari的問題,今天一整天都在改程式碼,一直到了下班回家吃晚飯還遠端繼續改,囧。我一定是人怪怪的,都下班了還在做事,而且還是拿NB來寫code,多麼不好寫。 由於在Windows作業系統上得Safari,網頁傳遞中文參數的時候,似乎不支援UrlEnc(Unicode)的編碼格式,所以後來都要改成UrlEnc(UTF-8),金靠北。 這可是非常浩大的工程,而且花了那麼多時間,能夠服務到多少使用者,一般在Windows OS上得使用者,大多還是用IE跟Firefox,不然就算是用Google Chrome好了,也沒這問題(Opera沒有裝來測試..Orz),竟然要為了這麼小眾的需求,來花費我這麼多的腦力跟精力。 不過靠腰歸靠腰,還是乖乖的改code,原本就asp.net的話比較好改,因為有找到可以編碼成UrlEnc(UTF-8)的方法。 ASP.NET (VBScript): 字串轉UrlEnc(UTF-8)編碼   HttpUtility.UrlEncode(String, Encoding.UTF8) example:   Dim word = "文"   Dim utf8 = HttpUtility.UrlEncode(word , Encoding.UTF8) 如果是16進位的Unicode,也沒關係 先把16進位轉10進位   Integer.Parse(16進位, System.Globalization.NumberStyles.HexNumber) 再把10進位轉文字   ChrW(Integer) 接著再把文字利用上面的方法轉換(怎麼感覺步驟很白痴,沒有更快的嗎?) example:   Dim unicode = "6587"   Dim hex2decimal = Integer.Parse(unicode , System.Globalization.NumberStyles.HexNumber) Dim word = ChrW(hex2decimal) Dim utf8 = HttpUtility.UrlEncode(word , Encoding.UTF8) or   Dim unicode = "6587"   Dim utf8 = HttpUtility.UrlEncode(ChrW(Integer.Parse(unicode , System.Globalization.NumberStyles.HexNumber)), Encoding.UTF8) 另外JavaScript的情況是 原本用escape()來編碼中文字串 現在都要改成encodeURI()encodeURIComponent() 這兩個的差別嘛,應該是有些字元encodeURI不做編碼,要改用encodeURIComponent來編碼,如下: Note: The encodeURI() function encodes special characters, with the exception of: , / ? : @ & = + $ #. Use the encodeURIComponent() function to encode these characters.
文章標籤
全站熱搜
創作者介紹
創作者 soarlin 的頭像
soarlin

每天都有新鮮事

soarlin 發表在 痞客邦 留言(0) 人氣(855)