php數組編碼轉換的方法參考

來源:互聯網
上載者:User
本文介紹下,在php中對數組進行編碼轉換的一些方法,有需要的朋友參考下。

在php編程中,對數組的操作,有時會遇上編碼轉換的相關問題。

因為一些特殊字元的顯示效果的原因,於是把utf-8改成了GBK,由於使用了ajax技術,又涉及到了老問題——編碼轉換。

一些表單驗證需要返回json資料,php的json_encode函數只支援utf-8編碼,無奈只得iconv了,需要達到的效果是GBK數群組轉換成utf-8數組傳給json_encode函數。

最初是這樣操作的,將數組序列化後用iconv函數轉換編碼,之後再還原序列化:

unserialize(iconv('gbk','utf-8',serialize($array)));   

得到的結果是空白,後來想起來設定檔裡設定了預設編碼 ini_set('default_charset', 'gbk');這樣用gbk還原序列化utf-8的字串肯定不好用了,此處在序列化和還原序列化之間加個ini_set('default_charset', 'utf-8'); 應該也是可以的。不過由於是全域的編碼設定,很容易導致其他地方的編碼問題,比如資料庫操作。

用構建數組原型的序列化方法,藉助var_export函數,最終函數如下:

  

原理分析:var_export設定第二個參數為true,返回數組原型字串,將字串轉換為utf-8編碼,之後再用eval來執行返回(類似匿名函數?),至此完美解決問題。

總結:網上的方法,大多都是利用遞迴調用iconv的方式,如果數組元素過多或者維數多一些,效能不行。因此,最好的方式,個人感覺還是用原生代碼,不需要考慮是N維數組還是關聯陣列,一切自動完成,保證數群組轉換前後資料一致。

關於php數組中編碼轉換的這個問題,就介紹到這裡了,希望對大家有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.