4

我觉得我的胡须在增长,同时试图在这里找出问题。

基本问题是,变音符号/特殊符号äöß ...不起作用。我想每个人都厌倦了这些问题,但在网上找到的所有解决方案似乎都不起作用。

我在 utf-8 Mysql 数据库中有 utf-8 内容。我觉得问题出在数据库连接的某个地方,但我就是想不通。

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem 二进制
character_set_results utf8
character_set_server latin1
character_set_system utf8

我不确定问题是否出在 character_set_server 的 latin1 上,因为我不喜欢 mysql 的东西。我也不知道如何更改,因为我无法访问 mysql 服务器的配置文件。

无论让我感到困惑的是,如果我从数据库中获取结果并回显它,print_r 会给出正确的结果。

ini_set('default_charset','utf-8');
header('Content-Type: text/plain; > charset=utf-8');

Firefox 说 char 编码是 utf-8 但如果我输出时:

print_r($listnew);
echo json_encode($listnew[5]);

print_r 结果一切正常,但 json_encode 做错了。

打印_r:

[5] => Array (
       [id] => 5
       [data] => U-Bahnhof Theresienstraße
       [size] => 17
)

json_encode:

{"id":5,"data":"U-Bahnhof Theresienstra\u00dfe","size":17}

我知道 json_encode 需要一个 utf-8 字符串才能在那里正常工作,我觉得我在这里遇到了编码问题,但我无法确定它在哪里。

任何帮助,将不胜感激,

提前致谢。

i3

4

1 回答 1

5

嗯...我认为这实际上是正确的方法。\u00df是 的正确 unicode 表示ß。当你json_decode()回来时,它会ß 再次成为。

这给您带来了哪些问题?接收端是否没有正确解码?如果您使用标准json_*功能,它应该。

手册中的所有示例都显示相同的内容 - 超出 ASCII 范围的字符将转换为数字序列。

于 2010-05-06T18:24:11.173 回答