close

  上次提到 Server 端無法接收到中文參數,原因在於 URL 的網址,按照規定只能出現部分 Ascii 碼,既然如此,直接把中文當成 URL 的一部份當然就會出問題啦。如果想要瞭解這部分更詳細的說明,我 google 了一下,建議可以參考中興大學資管系呂瑞麟老師的文章-細談URL 編碼

  所以我們需要調整的是 client 端的 URL 要先進行過 UTF-8 的編碼,如何做呢?其實很簡單,只要呼叫 HTTPEncode 與 UTF8Encode,就可以正確傳遞參數給 server 端了,如下

  iOSWithEncode1  

  server 端接收到參數的畫面

  iOSWithEncode2

  看起來 server 端已經可以正確接收到中文參數資料了,當然英文或是數字也不會有問題,但是 UTF8Encode 這個函式是宣告在 System 中沒有問題,那 HTTPEncode 宣告在哪裡呢?正常是宣告在 HttpApp 這個 unit 中,在 XE2 的版本則是改成 Web.HttpApp,但是各位看倌還記得嗎?之前「design iOS by Delphi XE2(三)」的文章中曾經提及 Components Not Used in iOS Apps,其中就包含 Web.HttpApp,所以在 iOS 的環境中,是不可以直接使用這個 unit 的,怎麼辦呢?當然就是改用 FPC 的 HTTPDefs,可以參考這個網址

  這樣就結束了嗎?當然還沒,因為如果 server 端回傳的資料格式是 json,裡面又有中文,那你可能會遇到問題,就是中文內容變成亂碼,這又有什麼簡單的方式可以解決呢?

 

...to be continued

arrow
arrow

    縹緲 發表在 痞客邦 留言(2) 人氣()