php 即使尽可能设置了UTF-8,也无法显示德语元音变音

mlnl4t2r  于 2023-03-16  发布在  PHP
关注(0)|答案(2)|浏览(132)

让我把情况解释清楚。
1.我正在用PHP 4处理一些旧的公司服务器。安装了Windows2000 NT和一个数据库,我可以用MicrosoftAccess 2000打开。
1.没有任何选项来设置字符编码(不像在phpMyAdmin中),但我可以在MS Access中正确读取字符。
1.我提取数据库中的数据在我的.php文件,并显示在我的网站上,但字符像:“ü,ä,ß”显示错误,如下所示:*
1.所有的php/html文件都被旧版本的Notepad++保存为UTF-8编码,包含:

<!DOCTYPE html>
    <html lang="de">
    <head>
      <meta charset="utf-8">

我读了一些关于字符编码的理论,字符编码的历史和万能的UTF-8,它将解决你所有的问题,这根本不是真的。

4uqofj5v

4uqofj5v1#

首先,确定你的断字符的确切字节值,不知道你就不能确定你喜欢使用的编码。

echo urlencode($string_with_umlauts);

这将把所有非ascii字符打印为百分比编码的十六进制值。注意这个函数是为其他目的设计的,但是它在这种情况下也会有帮助。
然后在维基百科这样的编码表中查找字节,并确定那里有什么。
最后一步:向数据库访问逻辑添加转换层,使用iconv函数将您看到的编码转换为UTF-8。

z0qdvdin

z0qdvdin2#

好吧,我找到解决办法了:

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;

}
但就没有更好的解决办法吗?

相关问题