您的位置:首页 > 编程语言 > PHP开发

php生僻字的处理,插入数据库被截断,空白,乱码解决办法,php冷僻字处理

2013-11-07 15:57 579 查看
前言欢迎喜欢php的朋友、喜欢mssql的朋友、喜欢extjs的朋友,一起来交流,本人不才,建个群,希望各位老师赏光。QQ群: PHP-MSSQL-EXTJS 号码: 110888868
网上找了资料,以为是数据库编码,表编码,字段编码的问题,都改成了utf-8的,还是不行,

最终的解决办法:

将

$str_1=iconv(“GB2312″,”UTF-8″,$str_1);

改成

$str_1=mb_convert_encoding($str_1,’UTF-8′,’GBK’);

就可以了。

主要有两个不同:

转码使用的方法不同,一个是用iconv,另一个用mb_convert_encoding
目标编码不同,一个是用GB2312,另一个是GBK
查查两个转码方式的差异

string iconv ( string $in_charset , string $out_charset , string $str )

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

转自http://blog.run21.net/?p=232


不过,使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。

查看php的信息页面,如果出现如下画面:

则说明已启用mbstring (multi-byte string)扩展支持。

如果没有出现上面的画面,则需要做如下设置 ,让php支持该扩展。

1、windows 服务器环境

编辑 php.ini 文件,将; extension=php_mbstring.dll 前面的 ; 去掉,重启网页服务器。

2、Linux 服务器环境

在编译配置时加入 --enable-mbstring=cn 编译参数 ,再进行PHP的编译安装。
转自http://hegz.iteye.com/blog/634865


自已总结代码:

字符串乱码转换:$rolename=iconv("gb2312","utf-8", $rolenamearray[0]) ;

字符串乱码转换+生僻字500错误解决方法:$rolename=mb_convert_encoding(rolename,'UTF-8','GBK');

数组乱码转换:eval('return '.iconv('gb2312','utf-8',var_export($rolename,true)).';');

数组乱码+生僻字500错误解决方法:$arrarr[] =eval('return '.mb_convert_encoding(var_export($obj,true),'utf-8','gb2312').';');

$arrarr[] =eval('return '.mb_convert_encoding(var_export($obj,true),'utf-8','gb2312').';');

//$arrarr[] = eval('return '.iconv('gb2312','utf-8',var_export($obj,true)).';') ;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: