如何从 php 发送 json 中的非英文字符?
How to send non english character in json from php?
我有一个非英文单词,例如 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 中的非英语单词吗?
使用以下代码:
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")));
您可能想要使用 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
这样使用 headers 时,您也需要按如下方式设置字符集:
->withHeader('Content-Type', 'application/json;charset=utf-8;')
在这些情况下有几种可能性:
可能性 -1: 您的数据库列编码可能不支持这些字符(检查列的编码并为 mysql 使用 utf8mb4)。在这种情况下,当您插入不受支持的字符(如“ù”)时,数据库会将其转换为真正的问号“?” . 你永远失去了字符你仍然会看到问号???不管你做什么
可能性-2:您的数据库使用了正确的编码并且您的字符已正确存储在数据库中,但您仍然看到问号“??????” .在这种情况下,显示字符的程序(文本编辑器、网络浏览器等)使用了错误的编码。
现在怎么办?
1- 检查您的数据库列编码是否支持 utf-8.()
2- 检查您正在使用的字符抛出的任何程序的编码(浏览器、文本编辑器、Mysql workbench、..等)
我有一个非英文单词,例如 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 中的非英语单词吗?
使用以下代码:
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")));
您可能想要使用 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
这样使用 headers 时,您也需要按如下方式设置字符集:
->withHeader('Content-Type', 'application/json;charset=utf-8;')
在这些情况下有几种可能性:
可能性 -1: 您的数据库列编码可能不支持这些字符(检查列的编码并为 mysql 使用 utf8mb4)。在这种情况下,当您插入不受支持的字符(如“ù”)时,数据库会将其转换为真正的问号“?” . 你永远失去了字符你仍然会看到问号???不管你做什么
可能性-2:您的数据库使用了正确的编码并且您的字符已正确存储在数据库中,但您仍然看到问号“??????” .在这种情况下,显示字符的程序(文本编辑器、网络浏览器等)使用了错误的编码。
现在怎么办?
1- 检查您的数据库列编码是否支持 utf-8.()
2- 检查您正在使用的字符抛出的任何程序的编码(浏览器、文本编辑器、Mysql workbench、..等)