백엔드 개발 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으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Go 언어 인코딩 분석: UTF-8과 GBK 비교 Go 언어 인코딩 분석: UTF-8과 GBK 비교 Mar 28, 2024 pm 01:54 PM

Go 언어 인코딩 분석: UTF-8과 GBK 비교

'요청한 모듈은 다음과 같은 내보내기를 제공하지 않습니다' 오류가 Vue Cli에 나타납니다. 어떻게 해결합니까? '요청한 모듈은 다음과 같은 내보내기를 제공하지 않습니다' 오류가 Vue Cli에 나타납니다. 어떻게 해결합니까? Aug 20, 2023 pm 07:25 PM

'요청한 모듈은 다음과 같은 내보내기를 제공하지 않습니다' 오류가 Vue Cli에 나타납니다. 어떻게 해결합니까?

중국어 처리에 꼭 필요한 추천 기능 : PHP iconv 기능 상세 설명 중국어 처리에 꼭 필요한 추천 기능 : PHP iconv 기능 상세 설명 Jun 27, 2023 pm 02:04 PM

중국어 처리에 꼭 필요한 추천 기능 : PHP iconv 기능 상세 설명

CentOS의 iconv 명령 소개 CentOS의 iconv 명령 소개 Dec 29, 2023 pm 07:52 PM

CentOS의 iconv 명령 소개

내보내기와 내보내기 기본값의 차이점 내보내기와 내보내기 기본값의 차이점 Oct 12, 2023 am 10:24 AM

내보내기와 내보내기 기본값의 차이점

Java에서 내보내기 방법을 사용하여 Excel 파일을 내보내는 방법 Java에서 내보내기 방법을 사용하여 Excel 파일을 내보내는 방법 Apr 27, 2023 pm 08:43 PM

Java에서 내보내기 방법을 사용하여 Excel 파일을 내보내는 방법

[권장] 리눅스 환경 변수를 구성하는 일반적인 방법! [권장] 리눅스 환경 변수를 구성하는 일반적인 방법! Feb 19, 2024 pm 01:06 PM

[권장] 리눅스 환경 변수를 구성하는 일반적인 방법!

PHP는 글꼴의 문자 인코딩 벡터를 변경합니다. PHP는 글꼴의 문자 인코딩 벡터를 변경합니다. Mar 21, 2024 pm 03:11 PM

PHP는 글꼴의 문자 인코딩 벡터를 변경합니다.

See all articles