来源:http://hudeyong926.iteye.com/blog/1127196
===========================================================
原理很简单,因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。而英文不 管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。
如果是文件形式的编码检查,还可以直接check utf-8的BOM信息。话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。
<?php function safeEncoding($string,$outEncoding ='UTF-8'){ $encoding = "UTF-8"; for($i=0;$i<strlen($string);$i++) { if(ord($string{$i})<128) continue; if((ord($string{$i})&224)==224) { //第一个字节判断通过 $char = $string{++$i}; if((ord($char)&128)==128) { //第二个字节判断通过 $char = $string{++$i}; if((ord($char)&128)==128) { $encoding = "UTF-8"; break; } } } if((ord($string{$i})&192)==192) { //第一个字节判断通过 $char = $string{++$i}; if((ord($char)&128)==128) { // 第二个字节判断通过 $encoding = "GB2312"; break; } } } if(strtoupper($encoding) == strtoupper($outEncoding)) return $string; else return iconv($encoding,$outEncoding,$string); } ?>
=================================================
另外有一种方法也很巧妙:
function getSafeCode($value){ $value_1= $value; $value_2 = @iconv("utf-8","gb2312",$value_1); $value_3 = @iconv("gb2312","utf-8",$value_2); if (strlen($value_1) == strlen($value_3)){ return $value_2; }else{ return $value_1; } }
相关推荐
为了方便大家在jsp页面中,通过js代码实现字符集转换,在这儿总结了一些js字符集转码函数,方便大家使用!!
万能转码函数,解决中文字符转码问题、GBK转utf8问题,utf8转gbk等等各种转码、乱码问题。
c语言字符集转换函数
话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。复制代码 代码如下:<?phpfunction safeEncoding($string,$outEncoding =’UTF-8′) { $encoding = “UTF-8”; for($i=0;$i<strlen($string...
前后台字符集转码.txt
pb调用外部函数进行字符集转换. // UTF-8转成GB2312 // GB2312转成UTF-8 // CP936转成UTF-8 // UTF-8转成CP936
因为自己使用字符编码一般的是utf-8编码,但如果对方的博客使用gb2312编码的话,POST过来就会出现乱码(除非对方POST前先转换编码)。在不能保证对方是否一定使用utf-8编码的情况下,自己做一个编码的检查和转换是很...
彻底解决android读取中文txt的乱码(自动判断文档类型并转码).doc
php截断字符串优化函数 php截断字符串优化函数 php截断字符串优化函数
PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 curl获取远程文件内容 GD显示中文 PHP GIF动画生成类 PHP HTML转UBB函数 PHP ...
宽字符集 unicode 操作函数
C++常用库函数 缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、进程控制函数、字符串操作函数 C++常用库函数 缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、...
建好DB后发现字符集不对,岂非痛心疾首。是推倒重建,还是曲线救库? 以前都是用第一种方法。参考了Oracle官方文档,小试了把我的测试库,效果还不错。把字符集转换过程中遇到的问题和解决方法,以及详细攻略记录...
一个好用的Php判断ip函数
ORACLE常用数值函数、转换函数、字符串函数介绍
php计算编辑距离函数,支持中文字符。php内置的levenshtein函数不支持中文。
下面是一个判断字符串是否为utf8的函数: bool is_str_utf8(const char* str) { unsigned int nBytes = 0;//UFT8可用1-6个字节编码,ASCII用一个字节 unsigned char chr = *str; bool bAllAscii = t
数字字符串转BCD码,BCD码转字符串C函数,定义好的函数下载即可使用无需更改。
日期与时间函数库 杂项函数库 字符串函数库 目录函数库 MySQL函数库 URL函数库 动态载入函数库 网路函数库 变量函数库 文件系统函数库 PDF函数库 Vmailmgr函数库 FDF函数库 信用卡交易函数库 WDDX函数库 FTP...