php json_encode部分不在数组上工作
我有一个PHP代码,需要将DB表数据编码为json。 所以我使用了json_encode() 我使用这里给出的表格- 对于不同的输入,此代码的行为似乎有所不同 查询-php json_encode部分不在数组上工作,php,json,Php,Json,我有一个PHP代码,需要将DB表数据编码为json。 所以我使用了json_encode() 我使用这里给出的表格- 对于不同的输入,此代码的行为似乎有所不同 查询-$query=“选择*来自国家”不返回任何json值。 查询-$query=“SELECT*FROM countries who containment\u code='AS'”正确返回json值 鉴于,$query=“SELECT*来自欧洲大陆的国家”\u code='EU'也不返回任何内容 类似地,“NA”、“AF”不起作用,而
$query=“选择*来自国家”代码>不返回任何json值。
查询-$query=“SELECT*FROM countries who containment\u code='AS'”代码>正确返回json值
鉴于,$query=“SELECT*来自欧洲大陆的国家”\u code='EU'代码>也不返回任何内容
类似地,“NA”、“AF”不起作用,而其他的则工作得很完美
我对PHP的json_编码的这种行为感到奇怪
这是我的密码
<?php
$con=mysqli_connect('localhost','xxxx','xxxxx','joomla30');
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM countries where continent_code='EU'") or die (mysqli_error($con));
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$orders[] = array(
'CountryCode' => $row['code'],
'CountryName' => $row['name']
);
}
//print_r($orders);
echo json_encode($orders);
mysqli_close($con);
?>
如果我尝试“AS”,我得到这个数组
Array ( [0] => Array ( [CountryCode] => AD [CountryName] => Andorra )
[1] => Array ( [CountryCode] => AL [CountryName] => Albania )
[2] => Array ( [CountryCode] => AT [CountryName] => Austria )
[3] => Array ( [CountryCode] => AX [CountryName] => Åland Islands )...
Array ( [0] => Array ( [CountryCode] => AE [CountryName] => United Arab Emirates )
[1] => Array ( [CountryCode] => AF [CountryName] => Afghanistan)
[2] => Array ( [CountryCode] => AM [CountryName] => Armenia)
[3] => Array ( [CountryCode] => AZ [CountryName] => Azerbaijan)...
两个阵列看起来都很相似,对吧。。。
但是Json_encode只在“AS”上工作,而不在“EU”上工作
有人知道如何解决这个问题吗?
如果是这样,请告诉我..您应该确保web应用程序的每个组件都使用UTF-8。另一个问题会告诉你怎么做。如果您来自RFC4627:
编码:JSON文本应采用Unicode编码。默认编码是UTF-8
json_encode函数要求所有传入数据都进行UTF-8编码。这就是为什么像Åland Islands
这样的字符串可能会给您带来问题。这里只是一个随机猜测:json_encode
要求您输入的所有数据都是UTF-8编码的,否则它将失败。在这些失败的国家,您可能有包含非ASCII字符的数据。纯ASCII恰好与需要特别注意的UTF-8非ASCII字符兼容。有关如何从数据库中获取UTF-8编码数据的信息,请参阅(使用)。我想,问题在于“奥兰群岛”,因为json_encode与“奥兰群岛”有问题,因为“奥兰群岛”是一个奇怪的unicode。尝试将mysql\u连接设置为UTF-8谢谢您在2分钟内的快速响应。。我添加了mysqli\u set\u字符集($con,'utf8')代码>它工作得很好…谢谢,我刚刚添加了以下代码$db->set_字符集(“utf8”)代码>在我准备好的声明中,并完美地工作