我在数据库中有一些数据,如下所示:
±©
·从这个ø
来看应该是Ÿ
.我不确定一些事情,但到目前为止,我的研究似乎指向这样一个事实,即它们使用两个字节 UTF8 编码,但显示为单个字节,因此一个字符 (Ÿ( 显示为两个(Ã 和 ̧(。
那么我该如何转换它呢?目前,我已经尝试了以下方法:
$text = "øåñÉé";
echo "Original: " . $text . "<br/>";
echo "iconv detect: " . iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text) . "<br/>";
echo "ASCII convert: " . iconv('ASCII', 'UTF-8//IGNORE', $text) . "<br/>";
echo "MB Convert: " . mb_convert_encoding($text, "UTF-8", "iso-8859-1") . "<br/>";
// Wrong way around?
echo "ASCII convert: " . iconv('UTF-8', 'ASCII//IGNORE', $text) . "<br/>";
echo "MB Convert: " . mb_convert_encoding($text, "iso-8859-1", "UTF-8") . "<br/>";
原文:±©
·iconv 检测: à ̧ã¥Ã±Ã‰Ã©
ASCII 转换:
MB转换: ±©
ASCII 转换:
MB Convert: øåñ ?é
值得注意的是,这只是针对特殊字符,所有abcdefghijkl。都很好,只是重音和特殊字符发疯了。
啊,我有它 - 但万一将来有人需要它:
$text = "Jørgen Furøy Håkansson Sahlén";
echo "Original: ". $text . "<br/>";
echo "Windows iconv: " . iconv("UTF-8","Windows-1252",$text) . "<br/>";
给:
Original: Jørgen Furøy Håkansson Sahlén
Windows iconv: JørgenFurøy Håkansson Sahlén
所以这是所有重要的Windows-1252
:
iconv("UTF-8","Windows-1252",$text)