我现在遇到的问题是要从一个数据库的表中查出一个字段的值,然后将这个值插入到另外一个数据库的表中,但是两个表的编码比一样,前一个是latin1_swedish_ci,后面一个是utf8,所以就会出现乱码,想在插入到第二个表前将latin1_swedish_ci编码的字符转换为utf8的编码之后在插进去,这样的话,应该就不会出现乱码问题了。
问题就出来了,就是怎么将latin1_swedish_ci编码转换为utf8呢
问题就出来了,就是怎么将latin1_swedish_ci编码转换为utf8呢
$s = iconv('GB2312', 'utf-8', $s);
以前我用curl抓网页内容用iconv转换就出过问题
我是要'latin1_swedish_ci'转换为 utf8 你的这个$s = iconv('GB2312', 'utf-8', $s);有点不着边际啊
echo utf8_encode($str);
latin1的编码在PHP里可以当成GB2312或老虎说的iso-8859-1'编码。
PHP里根本就不支持latin1的编码。
$s = iconv('latin1_swedish_ci', 'utf-8', $s);//这样你是怎么都转换不出来的
我现在就需要将这个值存到utf8的数据表中,用iconv('GB2312', 'utf-8', $s);
什么的,都是没有用的,存到utf8中的都是乱码
2个数据库都要query : set names 'utf8';然后应该不会乱码了,大概的意思是,告诉mysql服务器客户端的程序是utf-8,让服务器自动转换,
你插入的时候虽然是utf-8,如果服务器发现客户端的编码和表的编码不一样,它也会自动转换的.
现在的问题也就是这样,在phpmyadmin中,比如数据库data test是他的一个表,有个字段name 编码是latin1_swedish_ci,显示的àμ×ó003,页面的编码是gb2312,如果我用查询语句打印到页面显示的是??×?003,但是如果我在执行sql语句前加mysql_query("set names latin1");页面就能正常显示出汉字。
数据库里面的这个时候已经乱了的,认为先要恢复数据,
然后再修改数据库编码
然后再倒入正常的数据(将乱码的数据修正)。如果将乱码的数据修正,真的有点困难哦~~~~
建议LZ还是将数据库的编码调整好,不然一直存储乱码数据,虽然使用 iconv('GB2312', 'utf-8', $s); 可能会使页面显示正常,但是你数据库里面的数据都是乱码的,打开phpmyadmin都是乱的。
你不用iconv转,试下直接插入语句之前执行一下mysql_query("set name gbk");
想办法,把LATIN的转码,
你可以用导入功能试试。