我有一个非英语单词,例如'परीक्षण'在database.I从slim框架(Php)中获取数据,代码是:
while($row=$result->fetch_assoc()){
$data[]=$row;
}
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($data));
响应是例如
[{"s.n":"1","english_word":"test","nepali_word":"???????"}]
有人可以告诉我如何从php发送Json中的非英语单词?
答案 0 :(得分:3)
您可能想要使用JSON_UNESCAPED_UNICODE
常量
$arr = ['s.n' => 1, 'english_word' => 'test', 'nepali_word' => 'परीक्षण'];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
// Output : {"s.n":1,"english_word":"test","nepali_word":"परीक्षण"}
在您的问题上下文中,当使用Content-Type: application/json
这样的标题时,您还需要设置字符集,如下所示:
->withHeader('Content-Type', 'application/json;charset=utf-8;')
答案 1 :(得分:0)
使用以下代码:
while($row=$result->fetch_assoc()){
$data[]=$row;
}
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode(mb_convert_encoding($data, "HTML-ENTITIES", "UTF-8")));
答案 2 :(得分:-1)
在这些情况下有几种可能性:
可能性-1:您的数据库列编码可能不支持字符(检查列的编码并使用utf8mb4 for mysql)。在这种情况下,当您插入不支持的字符如“ع”时,数据库会将其转换为真实的实际问号“?” 。 你永远失去了角色,你仍会看到问号???无论你做什么
可能性-2:您的数据库正在使用正确的编码,并且您的字符已正确存储在数据库中,但您仍然会看到问号“?????” 。在这种情况下,显示字符的程序(文本编辑器,Web浏览器等)使用了错误的编码。
现在该怎么办?
1-检查数据库列编码以查看它是否支持utf-8。()
2-检查你使用字符throw的任何程序的编码(浏览器,文本编辑器,Mysql工作台,等等)