带有mysql内容的json_encode和utf-8中的变音符号

i3r*_*tus 4 php mysql json utf-8 diacritics

我觉得我的胡子在试图找出这里的问题时会长大.

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

我在utf-8 Mysql数据库中有utf-8内容.我觉得问题在数据库连接的某处,但我无法弄清楚.

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
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');
Run Code Online (Sandbox Code Playgroud)

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

print_r($listnew);
echo json_encode($listnew[5]);
Run Code Online (Sandbox Code Playgroud)

print_r结果一切正确,但json_encode做错了.

print_r的:

[5] => Array (
       [id] => 5
       [data] => U-Bahnhof Theresienstraße
       [size] => 17
)
Run Code Online (Sandbox Code Playgroud)

json_encode:

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

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

任何帮助,将不胜感激,

提前致谢.

I3

Pek*_*ica 5

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

这给你带来了什么问题?接收端是不是正确解码了?它应该使用标准json_*函数.

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