我正在从各种RSS提要中读取大量文本,并将它们插入到我的数据库中.
Of course, there are several different character encodings used in the feeds, e.g. UTF-8 and ISO 8859-1.
不幸的是,文本的编码有时会出现问题.例子:
在我的数据库中,"Fuüball"中的"«"应该是这样的:"Ÿ".如果是"Ÿ",则显示正确.
有时,"Fußball"中的"ß"在我的数据库中看起来像这样:"ß".当然,它会被错误地显示出来.
在其他情况下,"ß"保存为"ß"——因此没有任何更改.然后它也被错误地显示.
我能做些什么来避免 case 2和 case 3?
我怎样才能使所有内容都使用相同的编码,最好是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;
}
我测试过了,但它不工作.有什么问题吗?