我有一个内容管理器网站,其中字符编码对几乎每个人都非常有效,但对少数“幸运”用户却不是,这让我发疯。
我有一个(搜索)关键字数据库表(日志),它有时会显示非常奇怪的关键字(关键字最初是匈牙利语但发生了一些事情)例如数据库显示:
gyerekeknek papãrbã³l
代替
吉瑞凯克内克帕皮尔博尔
我无法复制罪魁祸首词/编码或网址,因为它对我来说完美无瑕,适用于每种口音甚至不同的语言(如西里尔字母、中文和特殊字符等)。
平均搜索 url 如下所示:
https://example.com/keyword=árvíztűrő+tükörfúrógép 或:https ://example.com/keyword=%c3%a1rv%c3%adzt%c5%b1r%c5%91+t%c3%bck%c3% b6rf%c3%bar%c3%b3g%c3%a9p
它工作得非常好(正如预期的那样,数据库行是“árvíztűrő tükörfúrógép”)
奇怪的是:GET['keyword'] 参数在到达时似乎已经采用错误的编码格式(“gyerekeknek papãrbã³l”)(没有任何 jquery/php 验证和/或处理)。
我的网站和数据库到处都是 UTF8 编码的。我的网站有:
AddDefaultCharset utf-8
(在 .htaccess 中)- 所有没有 BOM 的 UTF8 文件
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
在每一页上mysqli_query($con,"SET NAMES 'utf8'"); mysqli_query($con,"SET CHARACTER SET 'utf8'"); mysqli_query($con,"SET COLLATION_CONNECTION='utf8_general_ci'");
在每个数据库连接上
非常感谢任何想法或帮助,谢谢!