激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php數組編碼轉換示例詳解

php數組編碼轉換示例詳解

2020-06-17 13:02PHP教程網 PHP教程

需要達到的效果是GBK數組轉換成utf-8數組傳給json_encode函數,下面使用詳細介紹轉換方法

因為一些特殊字符的顯示效果的原因不得不把習慣的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函數,最終函數如下:

 

復制代碼 代碼如下:

function array_iconv($in_charset,$out_charset,$arr){ 
        return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';')); 
}

 

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

后續:后來在網上搜了下資料,看有沒有更好的方法,找到的都大同小異,都是利用遞歸調用iconv的方式,如果數組元素過多或者維數多一些,性能上肯定不怎么樣了,更好的是原生代碼的方式,不需要考慮是N維數組還是關聯數組,一切都已經自動完成,保證數組轉換前后數據一致。從代碼的長短以及循環和原生方法的比較上,相信大家已經有了選擇。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美aⅴ视频 | 亚洲一区二区三区视频免费 | 久久久久夜色精品国产老牛91 | 黄色一级片免费在线观看 | 成人一区二区三区在线 | 国产成人自拍视频在线观看 | 亚洲99| 免费在线观看成年人视频 | chinesexxxx刘婷hd 国产资源视频在线观看 | 污视频在线免费播放 | 国产精品jk白丝蜜臀av软件 | 国产一区二区三区高清 | 久久国产精品小视频 | a黄在线观看 | 一级在线免费观看视频 | 久久精品国产精品亚洲 | 欧美精品一区二区视频 | 激情夜色 | 久久亚洲精品国产一区 | 成人午夜精品久久久久久久蜜臀 | 亚洲国产精品久久久 | 国产免费一区二区三区最新不卡 | 羞羞的网址 | av影院在线播放 | 1024亚洲天堂 | 中文字幕www.| 欧美黄色一区 | 精品国产乱码一区二区三区四区 | 精品国产一区三区 | 大学生一级毛片在线视频 | 国产精品一区在线免费观看 | 激情夜色 | 国产亚洲自拍一区 | 毛片在线免费观看网址 | 色中色综合网 | 精品一区二区三区免费 | 日韩一级免费毛片 | 日韩在线播放一区二区 | 97干色| 亚洲精品一区二区三区免 | 精品视频一区二区三区四区 |