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

时间:2010-11-25 13:45:55

标签: php encoding utf-8 web-crawler

我正在抓取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 个答案:

答案 0 :(得分:2)

伙计们,我真的很抱歉。这是数据库问题。 $连接 - > setCharset( 'UTF8');固定它。没有iconv,没有mbstring。

我非常确定我需要转换字符集,我忘了检查它是否适用于没有转换的uft8页面。

感谢所有评论。

答案 1 :(得分:0)

我建议首先验证正确的数据是否达到iconv(以及类似于iconv的内容)。

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

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