首頁 後端開發 php教程 PHP数组编码变换

PHP数组编码变换

Jun 13, 2016 pm 12:55 PM
charset export gbk iconv

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函数,最终函数如下:

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维数组还是关联数组,一切都已经自动完成,保证数组转换前后数据一致。从代码的长短以及循环和原生方法的比较上,相信大家已经有了选择。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
Vue Cli中出現'The requested module does not provide an export named' Error – 怎麼解決? Vue Cli中出現'The requested module does not provide an export named' Error – 怎麼解決? Aug 20, 2023 pm 07:25 PM

VueCli中出現'Therequestedmoduledoesnotprovideanexportnamed'Error–要怎麼解決?在Vue專案的開發過程中,我們可能會遇到'Therequestedmoduledoesnotprovideanexportnamed'的錯誤提示。這個錯誤提示一般會出現在引入第三方元件時

中文處理必備函數推薦:PHP iconv函數詳解 中文處理必備函數推薦:PHP iconv函數詳解 Jun 27, 2023 pm 02:04 PM

在進行文字處理過程中,對於不同編碼格式的字串進行轉換是常見的需求。而PHP語言中提供的iconv(InternationalizationConvertion)函數可以非常方便地滿足這項需求。本文將從以下幾個方面詳細介紹iconv函數的使用方法:iconv函數的定義和常見參數介紹實例演示:將GBK編碼的字串轉換為UTF-8編碼的字串實例演示:將UTF

Go語言編碼解析:UTF-8與GBK對比 Go語言編碼解析:UTF-8與GBK對比 Mar 28, 2024 pm 01:54 PM

Go語言編碼解析:UTF-8與GBK比較在Go語言中,處理字串編碼是常見的任務之一。其中,UTF-8和GBK是兩種常用的字元編碼方式。本文將對UTF-8和GBK進行詳細對比,探討它們的差異和使用方法,並附上具體的程式碼範例。一、UTF-8與GBK的簡介UTF-8:UTF-8是一種可變長度的Unicode編碼方式,它可以表示世界上幾乎所有語言的字元。 UTF-8

CentOS下iconv命令的介紹 CentOS下iconv命令的介紹 Dec 29, 2023 pm 07:52 PM

iconv-fencoding[-tencoding][inputfile]...[功能]對於給定檔案把它的內容從一種編碼轉換成另一種編碼。 [描述]-fencoding:把字元從encoding編碼開始轉換。 -tencoding:把字元轉換到encoding編碼。 -l:列出已知的編碼字元集合-ofile:指定輸出檔案-c:忽略輸出的非法字元-s:禁止警告訊息,但不是錯誤訊息--verbose:顯示進度訊息-f和-t所能指定的合法字元在-l選項的命令裡面都列出來了。 [舉例]*列出目前支援的字元編碼

export和export default的差別 export和export default的差別 Oct 12, 2023 am 10:24 AM

export和export default的區別是export關鍵字用於導出一個或多個變數、函數或類,而export default關鍵字用於導出一個預設的變數、函數或類別。在其他模組中,可以使用import關鍵字來匯入這些導出的變數、函數或類別。

PHP改變字體中的字元編碼向量 PHP改變字體中的字元編碼向量 Mar 21, 2024 pm 03:11 PM

這篇文章將為大家詳細講解有關PHP改變字體中的字符編碼向量,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP中改變字串中的字元編碼在php中,字串的字元編碼決定了其中字元的表示方式。若要變更字串的字元編碼,可以使用下列步驟:1.確定目前字元編碼$encoding=mb_detect_encoding($string);這將傳回字串,表示字串的目前字元編碼,例如&quot;UTF-8&quot;或&quot;ISO-8859-1&quot;。 2.使用mb_convert_encoding

java中export方法如何實作匯出excel文件 java中export方法如何實作匯出excel文件 Apr 27, 2023 pm 08:43 PM

1.exportList);}2.匯出列名privateStringmyExport(Listlist){com.bronzesoft.power.tools.json.JSONObjectinfo=newcom.bronzesoft.power.toolspower.tools.json.JSONObjectinfo=newcom.bronzesoft.power.tools .json.JSONObject();try{ListheadList=newArrayList(Arrays.asList(&

WIN10將字元集從gbk改為utf_8的方法教程 WIN10將字元集從gbk改為utf_8的方法教程 Mar 27, 2024 pm 05:20 PM

1、在开始菜单点击鼠标右键,点一下运作。2、键入control回车键开启操作面板>钟表和地区>地区>管理方法>更该操作系统地区设定>发票勾选"Beta版:应用UnicodeUTF-8保证全世界語言适用"。

See all articles