首页 后端开发 php教程 php数组编码转换示例详解_PHP

php数组编码转换示例详解_PHP

Jun 01, 2016 am 11:55 AM
编码转换

因为一些特殊字符的显示效果的原因不得不把习惯的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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
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)

如何在电脑上输入下划线 如何在电脑上输入下划线 Feb 19, 2024 pm 08:36 PM

电脑下划线怎么打在电脑输入文字时,我们经常需要使用下划线来突出某些内容或进行标记。然而,对于一些不太熟悉电脑输入法的人来说,打出下划线可能会有些困惑。本文就将向大家介绍如何在电脑上打出下划线。在不同的电脑操作系统和软件中,输入下划线的方式可能会稍有不同。下面将分别介绍Windows操作系统和Mac操作系统上的常用方法。首先,我们先来看一下在Windows操作

探究golang编码转换的实现机制 探究golang编码转换的实现机制 Feb 19, 2024 pm 03:21 PM

Golang作为一种强大的编程语言,具有较高的性能和并发能力,同时也提供了丰富的标准库支持,其中包括了对编码转换的支持。本文将深入探讨Golang中编码转换的实现原理,并结合具体的代码示例进行分析。什么是编码转换?编码转换指的是将一个字符序列从一种编码转换为另一种编码的过程。在实际的开发中,我们经常需要处理不同编码之间的转换,比如将UTF-8编码的字符串转换

简单学习dedecms编码转换功能的方法 简单学习dedecms编码转换功能的方法 Mar 14, 2024 pm 02:09 PM

学习dedecms编码转换功能并不复杂,通过简单的代码示例,可以帮助您快速掌握这一技能。在dedecms中,编码转换功能通常用于处理中文乱码、特殊字符等问题,确保系统的正常运行和数据的准确性。下面将详细介绍如何使用dedecms的编码转换功能,让您轻松应对各种编码相关的需求。1.UTF-8转GBK在dedecms中,如果需要将UTF-8编码的字符串转换为G

如何处理C++开发中的编码转换问题 如何处理C++开发中的编码转换问题 Aug 22, 2023 am 11:07 AM

如何处理C++开发中的编码转换问题在C++开发过程中,经常会遇到需要处理不同编码之间转换的问题。由于不同的编码格式之间存在差异,因此在进行编码转换时需要注意一些细节。本文将介绍如何处理C++开发中的编码转换问题。一、了解不同编码格式在处理编码转换问题之前,首先需要了解不同的编码格式。常见的编码格式有ASCII、UTF-8、GBK等。ASCII是最早的编码格式

PHP所支持的编码及转换方法 PHP所支持的编码及转换方法 Jun 23, 2023 am 11:46 AM

PHP是一种脚本语言,广泛应用于Web开发,尤其是服务器端程序开发。在Web开发过程中,编码问题是非常重要的一环,解决编码问题需要掌握PHP所支持的编码及转换方法。本文将介绍PHP所支持的主要编码类型和转换方法。一、编码类型在Web开发过程中,常用的编码类型有以下几种:1.ASCII编码ASCII码是美国信息交换标准代码,可以表示127个字符,包含数字、字

dedecms编码转换插件的使用方法 dedecms编码转换插件的使用方法 Mar 14, 2024 pm 06:03 PM

《DedeCMS编码转换插件的使用方法,需要具体代码示例》DedeCMS是一款功能强大、易于使用的开源内容管理系统,广泛应用于各类网站建设中。在使用DedeCMS的过程中,有时会碰到需要对内容进行编码转换的情况,特别是在处理多语言网站或者涉及到不同编码的数据时。为了简化这一操作,DedeCMS提供了编码转换插件,可以轻松实现对内容的编码转换,提高网站的灵活性

在Go语言中使用MySQL实现数据的编码转换 在Go语言中使用MySQL实现数据的编码转换 Jun 17, 2023 pm 08:18 PM

随着全球化的发展,不同语言和文化之间的交流变得越来越频繁和紧密。由此带来的问题是,不同语言和文化之间的字符编码也开始变得复杂多样。在处理各种数据时,我们需要进行编码转换,以确保数据的正确性和一致性。在Go语言中,我们可以使用MySQL来实现数据的编码转换。本文将详细介绍如何在Go语言中使用MySQL实现数据的编码转换。一、Go语言中的字符编码和MySQL中的

Java开发中的编码转换异常的处理方法 Java开发中的编码转换异常的处理方法 Jun 30, 2023 am 08:21 AM

如何处理Java开发中的编码转换异常在Java开发过程中,处理编码转换异常是一个常见的问题。由于不同的操作系统和文本编辑器使用不同的字符编码方式,开发人员经常会遇到编码转换异常的情况。本文将介绍编码转换异常的原因以及如何正确地处理它们。一、编码转换异常的原因编码转换异常通常是由以下几个原因导致的:1.字符编码不一致:在不同的平台上,可能会使用不同的字符编码方

See all articles