自动识别文字编码并且转换为目标编码(php 正则)
来源:互联网 发布:c语言共用体union例子 编辑:程序博客网 时间:2024/06/08 02:02
原贴:http://www.oschina.net/code/snippet_130566_11015
在PHP处理页面的时候,我们对于字符集的转换都是采用了iconv或者mb_convert等函数,但,这其实是有一个前提的。即我们事先得知道in和out是什么样的编码,我们才能进行正确的转换。
虽然大多数转换都是在gbk和utf-8之间转,但如果不知道转换对象的编码怎么办呢?谷歌出来这么一个函数safeEncoding,可以简单的识别UTF8和GBK的编码。这个函数在一定程度上识别的很准确,但是在一些比较复杂的环境中就不是那么的好用了. 下面我结合了GBK和UTF-8编码的不同点,使用正则表达式来判断UTF-8编码并使用mb_convert_encoding函数来进行转换. 在国内,基本上比较流行的编码就是GBK和UTF-8, 所以这个函数是针对这两个编码进行自动转换的.
/**
* 来源网址: http://www.xuehuwang.com/read-450.html
* 作者:雪狐博客
* @ string 需要转换的文字
* @ encoding 目标编码
**/
function
detect_encoding(
$string
,
$encoding
=
'gbk'
){
$is_utf8
= preg_match(
'%^(?:[\x09\x0A\x0D\x20-\x7E]| [\xC2-\xDF][\x80-\xBF]| \xE0[\xA0-\xBF][\x80-\xBF] | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} | \xED[\x80-\x9F][\x80-\xBF] | \xF0[\x90-\xBF][\x80-\xBF]{2} | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2} )*$%xs'
,
$string
);
if
(
$is_utf8
&&
$encoding
==
'utf8'
){
return
$string
;
}
elseif
(
$is_utf8
){
return
mb_convert_encoding(
$string
,
$encoding
,
"UTF-8"
);
}
else
{
return
mb_convert_encoding(
$string
,
$encoding
,
'gbk,gb2312,big5'
);
}
}
function
is_utf8(
$str
) {
$sender_utf8
= @iconv(
'utf-8'
,
'utf-8'
,
$str
);
if
(
$str
===
$sender_utf8
) {
return
true;
}
}
0 0
- 自动识别文字编码并且转换为目标编码(php 正则)
- PHP --字符串编码转换(自动识别原编码)
- 文字转换为二进制/十六进制(Uncode编码 java实现)
- 文本转换为HTML文字编码
- php将中文转换成相应匹配的正则表达式(要求原文本为utf-8编码)
- php将image转换为base64编码
- LR实现普通文字转换为URL格式编码
- 编码转换(utf8转换为gb2312)
- 自动识别网页编码
- gedit自动识别GBK编码
- Java 自动识别文件编码
- 自动识别文件编码
- vim自动识别文件编码
- 编码自动识别工具 uchardet
- php判断是否为GBK编码并转换为utf8
- 文字编码转换[待补充]
- 编码转换php
- PHP编码转换函数
- python爬虫入门——初步采集
- S2第二章课后
- [APP接口] -- PHP开发APP接口(二)
- Elsa项目成长日记
- Unity破解失败pattern not found解决办法
- 自动识别文字编码并且转换为目标编码(php 正则)
- accp7.0-s2 优化MySchool数据库
- 记录一些网络编程要点
- mybatis配置通用dao和service时出现org.springframework.beans.factory.BeanCreationException异常
- ffmpeg生产rtp流
- Canvas类使用过程中的总结
- mysql 基准测试 sysbench的安装及基本使用方法
- Gradle Error: Failed to open zip file.
- 在Intellij idea 安装VSS插件及其相关配置