php可以将包含所有字符集编码的字符串转换为utf8吗?
不起作用的解决方案:
utf8_encode($string)
- 但它只将ISO-8859-1字符串编码为UTF-8?iconv($incharset, $outcharset,$text)
- 但是怎样才能找到字符串当前编码?
(只能是html dom文档的字符串部分,而不仅仅是字符串)感谢
答案 0 :(得分:5)
可以将字符串从iconv()
支持的任何编码转换为PHP中的UTF-8。
但怎么能找到字符串当前编码?
您永远不需要“找到”当前编码:您的脚本应始终知道它是什么。您查询的任何资源,如果编码正确,将在content-type
标题中或通过其他方式为您提供编码。
正如Artefacto所说,有可能使用mb_detect_encoding()
,但这不是一种可靠的方法。程序的数据流应始终定义字符串所在的编码(并且最好在内部使用UTF-8) - 这是要走的路。
答案 1 :(得分:1)
通常,您无法使用。
知道给定字符串的编码你所能做的只是猜测。有mb_detect_encoding
,它不能很好地工作,然后有更复杂的启发式,例如浏览器使用的语言提示。