首页 后端开发 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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++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教程
1662
14
CakePHP 教程
1419
52
Laravel 教程
1312
25
PHP教程
1262
29
C# 教程
1235
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关键字来导入这些导出的变量、函数或类。

WIN10将字符集从gbk改为utf_8的方法教程 WIN10将字符集从gbk改为utf_8的方法教程 Mar 27, 2024 pm 05:20 PM

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

java中export方法如何实现导出excel文件 java中export方法如何实现导出excel文件 Apr 27, 2023 pm 08:43 PM

1.export函数//导出文件接口publicStringexport(){returnthis.myExport(exportList);}2.导出列名privateStringmyExport(Listlist){com.bronzesoft.power.tools.json.JSONObjectinfo=newcom.bronzesoft.power.tools.json.JSONObject();try{ListheadList=newArrayList(Arrays.asList(&

PHP改变字体中的字符编码矢量 PHP改变字体中的字符编码矢量 Mar 21, 2024 pm 03:11 PM

这篇文章将为大家详细讲解有关PHP改变字体中的字符编码矢量,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP中改变字符串中的字符编码在php中,字符串的字符编码决定了其中字符的表示方式。要更改字符串的字符编码,可以使用以下步骤:1.确定当前字符编码$encoding=mb_detect_encoding($string);这将返回一个字符串,表示字符串的当前字符编码,例如"UTF-8"或"ISO-8859-1"。2.使用mb_convert_encoding

See all articles