错误信息的意思是向数据库添加的UTF-8编码格式不正确。
看看问题是不是在这句
$str=addslashes($str); 使用string下的函数操作中文字串经常会出现错误的,
比如说2-3byte一个的文字看成是2个文字,从中间切开等等。
必须替换成mb_string
看看问题是不是在这句
$str=addslashes($str); 使用string下的函数操作中文字串经常会出现错误的,
比如说2-3byte一个的文字看成是2个文字,从中间切开等等。
必须替换成mb_string
感觉你是检测编码这出了问题.
$str=file_get_contents("http://cache.qihoo.com/wenda.php?do=snap&act=fetchHtmlsnap&m=d113d9ecb6a77717d288d3e021dd3e48&surl=http%3A%2F%2Fbbs.gxsd.com.cn%2Fviewthread.php%3Ftid%3D221900%26extra%3Dpage%253D1&kw=%D7%AF%D7%D3");
echo mb_detect_encoding($str,array('ascii','utf-8','gbk','cp936')); //看看这个输出是什么,也可以用IE打开看看编码,看是不是和本页文件的本身编码和meta编码一致
如果不一致,转成页面的编码,然后$str=addslashes($str);
$conn=mysql_connect('localhost','root','cgs');
mysql_select_db('data');
mysql_query("set names 'utf8'"); //注意一下写法,如果文件的编码是utf-8,则这么用,否则用页面的编码$sql="insert into table values('".$str."')"; //这个如果只有一个字段,可这么用,否则出错
$res=mysql_query($sql);
if($res==false)
echo mysql_error(); 看看mysql版本,
mysql4.1以下的,set names 'utf8'"无效
?>
echo mb_detect_encoding($str,array('ascii','utf-8','gbk','cp936')); //看看这个输出是什么,也可以用IE打开看看编码,看是不是和本页文件的本身编码和meta编码一致
如果不一致,转成页面的编码,然后看看这个值是否IE下的一致
然后查一个文件自身的内码;
一个一个查,报出来
http://www.phpx.com/viewarticle.php?id=135226
1、MySQL的数据库编码是否是UTF-8
2、MySQL的数据表中的编码是否是UTF-8,以及字段是否是UTF-8
3、PHP文件的文件编码是否是UTF-8
4、网页的编码是否是UTF-8(用header传送UTF-8最好)
Server: Apache
P3P: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Set-Cookie: B=ID=589951228368956:V=2:S=0418fdd281; path=/; expires=Sun, 17-Jun-2038 23:59:59 GMT; domain=.qihoo.com
Set-Cookie: UT=T=1228368956:F=Y2FjaGUucWlob28uY29t:REF=cache.qihoo.com:S=1; path=/; domain=.qihoo.com
X-Powered-By: PHP/5.2.3
Set-Cookie: QT_UID=bd98f4f3e746c500; path=/; domain=.qihoo.com
Cache-Control: max-age=14400
Pragma: cache
ETag: d120c1fb0aff67fc1d80c6b4ed8863b7
Expires: Thu, 04 Dec 2008 09:35:57 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Cache: MISS from c1.pr.bjt.qihoo.net
Via: 1.1 c1.pr.bjt.qihoo.net:80 (squid)
Connection: close
很明显,返回的页面经过了编码。
你还需要iconv来转一下编码conv
(PHP 4 >= 4.0.5, PHP 5)iconv -- Convert string to requested character encoding
Description
string iconv ( string in_charset, string out_charset, string str)
Performs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure. 例子 1. iconv() example:<?php
echo iconv("ISO-8859-1", "UTF-8", "This is a test.");
?>
很好解决的