raf*_*utz 4 php encoding utf-8
我正在研究一种网络爬虫,它可以从世界各地的网站上获取数据,并且正在处理不同的语言和编码.
目前我正在使用以下功能,它在99%的情况下都有效.但是有1%令我头疼.
function convertEncoding($str) {
return iconv(mb_detect_encoding($str), "UTF-8", $str);
}
Run Code Online (Sandbox Code Playgroud)
您应首先检查下载的页面是否具有列出的字符集,而不是盲目地尝试检测编码.可以在HTTP响应头中设置字符集,例如:
Content-Type:text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
或者在HTML中作为元标记,例如:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
只有当两者都不可用时才尝试用mb_detect_encoding()或其他方法猜测编码.
由于某些字符集是其他字符集的子集,因此无法以100%的速率检测字符串的字符集.如果可能,请尝试显式设置字符集,而不要混合iconv和mbstring函数.我建议使用这样的函数,并尽可能从charset提供:
function convertEncoding($str, $from = 'auto', $to = "UTF-8") {
if($from == 'auto') $from = mb_detect_encoding($str);
return mb_convert_encoding ($str , $to, $from);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21809 次 |
| 最近记录: |