代码之家  ›  专栏  ›  技术社区  ›  umpirsky

PHP将字符串从windows-1250转换为utf-8

  •  0
  • umpirsky  · 技术社区  · 14 年前

    我正在抓取windows-1250站点(meta http equiv=“Content Type”Content=“text/html;charset=windows-1250”)。

    因为我的数据库是utf-8,所以我需要将数据转换为utf-8。

    我试过iconv('windows-1250','UTF-8',$s);它给的是“…arls”,而不是“arls”。

    当编码切换到iconv('UTF-8','windows-1250',$s)时,它会给出更好的结果;将“arls”改为“arls”。很奇怪。

    你知道怎么把它转换成utf-8吗?

    提前谢谢。

    2 回复  |  直到 14 年前
        1
  •  2
  •   umpirsky    14 年前

    各位,我真的很抱歉。是数据库的问题。$connection->setCharset('UTF8');已修复。没有iconv,没有mbstring。

    我非常确定我需要转换字符集,以至于我忘记检查它是否在没有转换的uft8页面上工作。

    谢谢你的评论。

        2
  •  0
  •   borrible    14 年前

    我建议首先验证正确的数据是否到达了iconv(同样,iconv的结果也是如此)。

    使用类似的语句 echo bin2hex($string) 看看字节流 $s 在iconv之前。如果你有字符串,你相信你有第一个字节应该是 c8 . 如果再看iconv后面的字节流,第一个字节应该是 c48c (在UTF-8中);如果转换成UCS-2,您将看到 010c 你会的 see 是unicode中的相关字符。

    根据结果,您将知道您的问题是否在于收集数据(即,您没有看到c8)、iconv安装(即,转换产生错误的结果)或将该数据放入数据库(即,iconv的结果与预期一样)。

    推荐文章