php 数组编码转换方法 关于fgetcsv中文乱码问题
程序员文章站
2022-06-06 15:37:10
...
在处理csv文件导入时关于fgetcsv获取中文乱码问题.. 因为项目采用utf-8编码, 而导入的csv文件是以ansi编码保存的 输出中文乱码问题.
下面为找到的解决方法原文.
引用: http://www.pignut.net/352
今天在处理csv文件导入的时候,通过fgetcsv方法返回的数组中,值为汉字的部分全是乱码。我分析是因为项目的文件全部以utf-8编码,而
导入的csv文件是以ansi编码保存的,对于中文操作系统环境对应的应该就是gbk编码了,通过手动更改浏览器字符编码为gbk,乱码的情况消失了。于
是决定对数组进行编码转换。
系统默认的编码转换函数iconv只能接受字符串参数,当然我们可以通过array_walk……等数组方法利用回调函数递归的来进行处理,也可以
直接读取数组单元处理后再填入数组。但是感觉数组如果很庞大或者维数过多,性能上的比较就不得不考虑了。正因为iconv函数只能接受字符串参数,于是想
到将数组先利用函数serialize序列化,通过iconv转换编码后再用unserialize反序列化回来。但不知道为什么转换编码后无法反序列化
回来,找个时间单独实验一下,清楚的朋友给我留个言也好。
于是求助其他Variable handling
函数。在这里var_export函数可以输出或返回一个变量的字符串表示。此函数返回关于传递给该函数的变量的结构信息,它和 var_dump()
类似,不同的是其返回的表示是合法的 PHP 代码。可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。下面就利用这一特性将数组转化为字符串然后再iconv接着再用eval函数将其还原为数组。这次结果正确显示了。
$data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';');
$data为需要转换编码的数组。
推荐阅读
-
php编码与中文乱码问题解决方法
-
关于php get方法传递中文参数显示乱码有关问题
-
php 数组编码转换方法 关于fgetcsv中文乱码问题
-
关于php get方法传递中文参数显示乱码有关问题
-
php中iconv编码转换来解决中文乱码的问题_PHP教程
-
关于php中json_encode中文乱码问题 json encode 数组 json encode true python json encode
-
php 数组编码转换方法 关于fgetcsv中文乱码问题
-
关于php get方法传递中文参数显示乱码有关问题
-
关于php中json_encode中文乱码问题 json encode 数组 json encode true python json encode
-
php中iconv编码转换来解决中文乱码的问题