我对编码相关的错误感到一团糟。
[我有一个带有latin1的数据库(我相信它接近Windows-1252),在Windows-1252中有一个用户前端页面,在Windows-1252中有一个AJAX后端。这些不能更改为atm。
但是,因为JSON希望处理UTF8数据,所以我在使用德国Umlaute时遇到了很多麻烦。
我当前正在从前端[{"\u00f6\u00e4\u00fc\u00df"}]
上的数据库中检索一些转义的示例数据,并使用
foreach($example_array_of_objects as $k => &$v) {
foreach($v as $k2 => $v2) {
$v[$k2] = utf8_decode($v2);
}
}
这将在前端的输入表单字段中正确显示数据。
但是,这就是我遇到的问题。 PHP的json_encode将Umlaute转义为这些\ u序列,但是在Javascript中,JSON.stringify却没有。当我对输入字段数据进行JSON.stringify并将其发送到AJAX脚本时,我仅从print_r响应中得到垃圾:
öäüß
encodeURIComponent与PHP进行的转义类型不同。这真令人发指。
如何在JS中将“öäüß”转换为\ u00f6 \ u00e4 \ u00fc \ u00df(或如何在JS / PHP / mySQL之间同步处理数据的方式?]
曾经遇到过这种类型的问题,但是PHP却没有,它是使用encodeURIComponent解决的。如果encodeURIComponent不起作用,请尝试使用atob和btoa在两侧使用Base64编码解码。