让我更接近解释一下情况。
ü, ä, ß
这样的字符显示错误,如下所示:�
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
我读了一些关于字符编码,字符编码历史和全能UTF-8的理论,它将解决你所有的问题,这根本不是真的。可能有什么不对?
答案 0 :(得分:1)
首先,确定您的破碎字符具有哪些字节值。不知道你无法识别要使用的编码。
echo urlencode($string_with_umlauts);
这会将所有非ascii字符打印为百分比编码的十六进制值。请注意,此功能仅用于其他目的,但在这种情况下它也会有所帮助。
然后查找像维基百科这样的编码表中的字节,并确定你有什么。
最后一步:将转换层添加到数据库访问逻辑,该逻辑将您看到的编码转换为带有iconv函数的UTF-8。
答案 1 :(得分:1)
好吧,我找到了解决方案:
function decode($string){
$string = urlencode($string);
$string = str_replace('%DF','ß',$string);
$string = str_replace('%E4','ä',$string);
$string = str_replace('%F6','ö',$string);
$string = str_replace('%2B','+',$string);
$string = str_replace('%FC','ü',$string);
$string = str_replace('%26','&',$string);
$string = str_replace('%2F','/',$string);
$string = str_replace('%0A','',$string);
$string = str_replace('%0D','',$string);
$string = str_replace('%40','@',$string);
$string = str_replace('%2C',',',$string);
$string = str_replace('%E1','á',$string);
$string = str_replace('%D3','ó',$string);
$string = str_replace('+',' ',$string);
return $string;
}
但是没有更好的解决方案吗?