疯狂使用JSON编码错误以及JS和PHP之间的区别

问题描述 投票:2回答:1

我对编码相关的错误感到一团糟。

[我有一个带有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之间同步处理数据的方式?]

javascript php json
1个回答
0
投票

曾经遇到过这种类型的问题,但是PHP却没有,它是使用encodeURIComponent解决的。如果encodeURIComponent不起作用,请尝试使用atob和btoa在两侧使用Base64编码解码。

© www.soinside.com 2019 - 2024. All rights reserved.