php可以将所有字符集编码的字符串转换为utf8

时间:2010-07-28 23:07:28

标签: php iconv utf8-decode

php可以将包含所有字符集编码的字符串转换为utf8吗?

不起作用的解决方案:

  1. utf8_encode($string) - 但它只将ISO-8859-1字符串编码为UTF-8?
  2. iconv($incharset, $outcharset,$text) - 但是怎样才能找到字符串当前编码? (只能是html dom文档的字符串部分,而不仅仅是字符串)
  3. 感谢

2 个答案:

答案 0 :(得分:5)

可以将字符串从iconv()支持的任何编码转换为PHP中的UTF-8。

  

但怎么能找到字符串当前编码?

您永远不需要“找到”当前编码:您的脚本应始终知道它是什么。您查询的任何资源,如果编码正确,将在content-type标题中或通过其他方式为您提供编码。

正如Artefacto所说,有可能使用mb_detect_encoding(),但这不是一种可靠的方法。程序的数据流应始终定义字符串所在的编码(并且最好在内部使用UTF-8) - 这是要走的路。

答案 1 :(得分:1)

通常,您无法使用。

知道给定字符串的编码

你所能做的只是猜测。有mb_detect_encoding,它不能很好地工作,然后有更复杂的启发式,例如浏览器使用的语言提示。