2013-10-03 79 views
0

我使用JSON將數組從PHP發送到Javascript。該數組正在從數據庫獲取數據。我用JSON和外來字符搜索了多個關於問題的主題,每個人都說要解決這個問題,你必須將編碼設置爲utf-8。我認爲我做到了,但它不能幫助我。所以我運行測試看看有什麼問題。爲了簡化和簡單,我嘗試將波蘭語字符的字符串傳遞給json_encode()函數。所以我創建了index.php文件。在我的文字編輯,我選擇UTF-8編碼的選項沒有BOM,我開始代碼:JSON +波蘭語字符

<?php 
header('Content-Type: text/html; charset=utf-8'); 
$data = "polish characters: ążśęłóćźć"; 
$jsonData = json_encode($data); 
echo mb_detect_encoding($data) . "<br />; 
echo $jsonData; 
?> 

結果是:

UTF-8 
"polish characters : \u0105\u017c\u015b\u0119\u0142\u00f3\u0107\u017a\u0107" 

我還是無法輸出潤色人物。我不知道什麼是錯的?請幫助:)

+1

你從哪裏看到這個輸出?將JSON數據直接回傳到HTML頁面並期望它以有意義的方式渲染是沒有意義的。它可能是那裏的JavaScript腳本的一部分,但你也必須以某種方式處理它。 – Bruno

+1

你在你的php中有一個錯字。 – Daedalus

+0

爲什麼在輸出JSON時將標題設置爲text/html?如果你沒有JSON編碼字符串(或者甚至編碼它然後解碼它),那麼將顯示波蘭語字符。或者,如果您希望將數據輸出爲JSON,則UTF-8編碼(\ u0105)將被保留,並且可以通過讀取它的任何代碼進行翻譯。 –

回答

0

嘗試這樣做:

echo json_decode(json_encode($data)); 

你應該看到的是,波蘭的字符顯示就好了。

應用程序不應直接向最終用戶顯示JSON,但應首先將其解析爲更人性化的格式。如果您遵循該規則,json_encode不應該給您任何問題,因爲您將始終解碼並將其解析爲適當的任何格式。

+0

Omg什麼是embaressment :)你們都有權利沒有問題開始。我自己創造了它。我只需要一個方法來傳遞多維數組從PHP到JavaScript,我看到這種方法與JSON。當我從couriosity編碼它時,我回應PHP編碼的數組,因爲我很高興。當我看到沒有波蘭語的人物時,它就開始了。我基本上浪費了幾個小時試圖把波蘭語字符放回到編碼數組中:)而且我非常盲目,我沒有嘗試從javascript輸出解碼後的數組。感謝您幫助我如此迅速 – Bogdan