我有一個PHP代碼,需要將數據庫表數據編碼為json。所以我使用了json_encode()。我使用此處給出的表格-http: //www.geekality.net/2011/08/21/country-names-continent-names-and-iso-3166-codes-for-mysql/對于不同的輸入,此代碼的行為似乎有所不同。查詢- $query = "SELECT * FROM countries ";不返回任何json值。查詢- $query = "SELECT * FROM countries where continent_code='AS'";正確返回json值。但是,$query = "SELECT * FROM countries where continent_code='EU'";也不會返回任何內容。同樣,“ NA”,“ AF”無效,而其他人則完美。我對PHP的json_encode的這種行為感到奇怪。這是我的代碼。<?php$con=mysqli_connect('localhost','xxxx','xxxxx','joomla30');// Check connectionif (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);?>直到json_encode的上一行為止,數據都會被攜帶。所以我認為它的json編碼問題。我嘗試使用來了解它print_r($orders);。我從中得到以下輸出。如果我嘗試使用“ EU”,則會得到該數組。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 )...如果我嘗試使用“ AS”,則會得到該數組。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'上無效。有誰知道如何解決這個問題?如果是這樣,請告訴我。
2 回答

滄海一幻覺
TA貢獻1824條經驗 獲得超5個贊
您應該確保Web應用程序的每個組件都使用UTF-8。另一個問題的答案將告訴您如何執行此操作。如果您從RFC4627中閱讀以下內容:
編碼:JSON文本應以Unicode編碼。默認編碼為UTF-8。
json_encode函數要求所有傳入數據均采用UTF-8編碼。這就是為什么諸如這樣的字符串?land Islands可能會導致您出現問題的原因。
- 2 回答
- 0 關注
- 1029 瀏覽
添加回答
舉報
0/150
提交
取消