2010-05-06 17 views
4

我覺得我的鬍子增長,同時試圖找出問題在這裏。json_encode與MySQL內容和utf-8變音符號

基本問題是,變音符號/特殊符號äöß...不起作用。我想每個人都對這些問題感到厭倦,但所有在網上找到的解決方案似乎並不奏效。

我在utf-8 Mysql數據庫中有utf-8內容。我覺得問題在數據庫連接的某個地方,但我無法弄清楚。

character_set_client字符UTF8
是character_set_connection UTF8
character_set_database UTF8
character_set_filesystem二進制
character_set_results UTF8
被character_set_server LATIN1
character_set_system UTF8

林不知道,如果問題是LATIN1對被character_set_server因爲IM沒有進入該MySQL的東西。我也不知道如何改變,因爲我無法訪問MySQL服務器的配置文件。

不管怎麼說,如果我從數據庫中得到我的結果並回顯它,print_r會給出正確的結果。

ini_set('default_charset','utf-8'); 
header('Content-Type: text/plain; > charset=utf-8'); 

火狐說字符編碼是utf-8,但如果當我輸出:

print_r($listnew); 
echo json_encode($listnew[5]); 

print_r的結果一切權利,但json_encode確實錯了。

的print_r:

[5] => Array (
     [id] => 5 
     [data] => U-Bahnhof Theresienstraße 
     [size] => 17 
) 

json_encode:

{ 「ID」:5, 「數據」: 「U-BAHNHOF Theresienstra \ u00dfe」, 「大小」:17}

我知道json_encode需要一個utf-8字符串在那裏正常工作,我覺得我在這裏有一個編碼問題,但我不能確定它在哪裏。

任何幫助,將不勝感激,

在此先感謝。

I3

回答

5

嗯...我認爲,實際上是正確方式。 \u00dfß的正確Unicode代表。當你回到json_decode()時,它會再次變成ß

這會給您帶來哪些問題?接收端是否無法正確解碼?它應該如果你使用標準json_*函數。

manual中的所有示例都顯示了相同的內容 - 超出ASCII範圍的字符會變成數字序列。

+0

我沒有意識到這個事實,它可能會被譯碼翻譯,所以我跟蹤哪裏沒有錯誤。 我只是生成輸出,但我後來不處理json對象,所以可能會由其他應用程序解決。 對不起,並感謝您的幫助, i3 – i3rutus 2010-05-06 19:39:10

+1

有時編碼我使用json_encode($ array,JSON_UNESCAPED_UNICODE) – Miguel 2014-01-25 16:18:53