我现在遇到的问题是要从一个数据库的表中查出一个字段的值,然后将这个值插入到另外一个数据库的表中,但是两个表的编码比一样,前一个是latin1_swedish_ci,后面一个是utf8,所以就会出现乱码,想在插入到第二个表前将latin1_swedish_ci编码的字符转换为utf8的编码之后在插进去,这样的话,应该就不会出现乱码问题了。
   问题就出来了,就是怎么将latin1_swedish_ci编码转换为utf8呢

解决方案 »

  1.   

    iconv('latin1_swedish_ci', 'utf-8', $s);
      

  2.   

    $s = iconv('latin1_swedish_ci', 'utf-8', $s);   //$s给定的字符串
      

  3.   

    如果php你开了iconv模块,可以用楼上的,如果没有就需要你用二进制自己转了
      

  4.   

    PHP里iconv不支持'latin1_swedish_ci'编码
    $s = iconv('GB2312', 'utf-8', $s); 
      

  5.   

    建议用mb_convert_encoding,对大批量文字支持比较好,前提是开了mb_string系列
    以前我用curl抓网页内容用iconv转换就出过问题
      

  6.   


    我是要'latin1_swedish_ci'转换为 utf8 你的这个$s = iconv('GB2312', 'utf-8', $s);有点不着边际啊
      

  7.   

    try$str = "lantin1数据";
    echo utf8_encode($str);
      

  8.   

    iconv的话应该是iconv('iso-8859-1','utf-8',$str)
      

  9.   


    latin1的编码在PHP里可以当成GB2312或老虎说的iso-8859-1'编码。
    PHP里根本就不支持latin1的编码。
    $s = iconv('latin1_swedish_ci', 'utf-8', $s);//这样你是怎么都转换不出来的
      

  10.   

    数据库中latin1编码的汉字显示的是如:àμ×ó003;用php读取显示到页面的时候,都需要mysql_query("set names latin1");才能正常显示为汉字
    我现在就需要将这个值存到utf8的数据表中,用iconv('GB2312', 'utf-8', $s);
    什么的,都是没有用的,存到utf8中的都是乱码
      

  11.   

    首先
    2个数据库都要query : set names 'utf8';然后应该不会乱码了,大概的意思是,告诉mysql服务器客户端的程序是utf-8,让服务器自动转换,
    你插入的时候虽然是utf-8,如果服务器发现客户端的编码和表的编码不一样,它也会自动转换的.
      

  12.   

    本帖最后由 xuzuning 于 2010-07-02 17:32:10 编辑
      

  13.   

    哎,上面的方法好像都没有用
    现在的问题也就是这样,在phpmyadmin中,比如数据库data  test是他的一个表,有个字段name 编码是latin1_swedish_ci,显示的àμ×ó003,页面的编码是gb2312,如果我用查询语句打印到页面显示的是??×?003,但是如果我在执行sql语句前加mysql_query("set names latin1");页面就能正常显示出汉字。
      

  14.   

    现在也就是需要将àμ×ó003转换为在页面编码为gb2312的时候能正常显示,因为gb2312转utf8就比较简单了
      

  15.   

    你在18L不是已经“在页面编码为gb2312的时候能正常显示”了吗?
      

  16.   


    数据库里面的这个时候已经乱了的,认为先要恢复数据,
    然后再修改数据库编码
    然后再倒入正常的数据(将乱码的数据修正)。如果将乱码的数据修正,真的有点困难哦~~~~
    建议LZ还是将数据库的编码调整好,不然一直存储乱码数据,虽然使用 iconv('GB2312', 'utf-8', $s); 可能会使页面显示正常,但是你数据库里面的数据都是乱码的,打开phpmyadmin都是乱的。
      

  17.   

    那说明数据是gbk的啊。
    你不用iconv转,试下直接插入语句之前执行一下mysql_query("set name gbk");
      

  18.   

    应该说是披着latin1外衣的gbk数据。 
      

  19.   

    问题要简单化,
    想办法,把LATIN的转码,
    你可以用导入功能试试。