我觉得我的胡子在试图找到问题时会长大。
基本问题是,变音符号/特殊符号äöß...不起作用。我想每个人都厌倦了这些问题,但在网上找到的所有解决方案似乎都不起作用。
我在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做错了。
的print_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
答案 0 :(得分:5)
\u00df
是ß
的正确unicode表示形式。当你json_decode()
回来时,它会再次成为ß
。
这给你带来了什么问题?接收端是不是正确解码了?如果您使用标准json_*
函数,则应该这样做。
manual中的所有示例都显示相同的内容 - 超出ASCII范围的字符将转换为数字序列。