由于对一些特殊字符的显示效果的原因,我们不得不把定制项目为UTF-8 GBK。由于Ajax技术,它涉及到旧的问题——代码转换。PHP的json_encode功能只支持UTF-8编码,但它没有选择只有iconv。的作用是变换成UTF-8 GBK阵列阵列json_encode功能。

第一个想法是序列化数组iconv函数转换代码,然后反序列化。代码如下:

复制代码代码如下所示:
序列化(iconv('gbk ','utf-8,序列化($array)));


结果是一片空白,认为它在配置文件后,设置默认编码ini_set('default_charset ','gbk ');然后GBK反序列化字符串必须UTF-8好用在这里,一个ini_set的序列化和反序列化('default_charset之间,'utf-8 ');它应该是可能的,但这样得到的感觉这是因为,全球编码设置,使编码问题很容易,如数据库操作。然后改变思维方式,以构建一个阵列原型的序列化方法,对var_export功能的帮助下,最终的功能如下:

复制代码代码如下所示:
功能array_iconv(in_charset美元美元美元,out_charset,ARR){
返回eval(返回'。iconv(in_charset美元,out_charset美元,var_export(美元啊,真的)。)));
}


原理很简单。var_export集二参数为true,返回数组的原型的字符串,将字符串转换为UTF-8编码,然后执行回eval(类似于匿名函数)。这是问题的完美解决方案。

后续:在网上搜索信息后,看有没有更好的方式来找到相同,是使用递归调用iconv,如果数组中的元素过多或尺寸,性能肯定不怎么样,更好的是本地代码,不需要考虑的是N维数组或关联数组,一切都是自动完成的,之前和之后的数组转换保证数据的一致性,代码的长度和循环和本地方法的比较,我相信你有一个选择。