检测编码并使所有UTF-8
我正在从各种RSS提要中读取大量文本,并将它们插入到我的数据库中。
当然,在提要中有几种不同的字符编码,例如UTF-8和ISO-8859-1。
不幸的是,文本的编码有时会出现问题。例子:
在我的数据库中,“fubsball”中的“http”应该是这样的:“Ÿ”。如果它是“Ÿ”,则显示正确。
有时,在我的数据库中,“FuƒŸ”中的“http”是这样的。当然,它会被错误地展示出来。
在另一些情况下,“http”被保存为“http”-因此没有任何更改。然后它也会被错误地显示出来。
我能做些什么来避免第二和第三种情况?
我如何使所有的编码相同,最好是UTF-8?我什么时候该用utf8_encode()
,我什么时候该用utf8_decode()
(很清楚效果是什么,但我什么时候必须使用这些函数?)什么时候我必须对输入什么都不做?
你能帮我把所有的编码都做好吗?也许有这个功能mb_detect_encoding()
?我能为这个写一个函数吗?所以我的问题是:
- 如何找出文本使用的编码方式?
- 如何将其转换为UTF-8-无论旧编码是什么?
像这样的功能有用吗?
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;}
我已经测试过了,但不起作用。怎么了?