2015-04-17 36 views
1

我有一個PHP代碼,它在調用時寫入JSON文件。該文件包含一些西班牙語和葡萄牙語的拉丁文字符。它在瀏覽器中直接瀏覽到它的URL時正確顯示,但在應用程序和開發人員控制檯中的響應預覽選項卡下,這些字符被替換爲字符 。PHP中的奇怪字符( )由PHP寫入文件

圖片,以更好地說明情況: bad characters (點擊圖片在全尺寸打開)

該文件是用PHP編寫下面的代碼:

file_put_contents('../data/cameras.json', $json, LOCK_EX); 

我試過很多修復這種編碼沒有成功的方法(其中一些甚至刪除了字符,但這不是一個可接受的解決方案)。

有關如何解決此問題的任何建議?

+1

到底是如何產生你'$ json'? – deceze

+0

您可以從開發者控制檯發佈響應頭文件和PHP代碼中存儲在服務器中的原始文件嗎? – tiblu

+0

正在從Postgre數據庫讀取信息(我不知道它是編碼),並通過'str_replace(array(「\ r」,「\ n」),「」,(str_replace('「',」 '',trim($ string))));'。該文件位於http://www.seventh.com.br/calculadora2-testing/data/cameras.json –

回答

1

我已經下載了json文件,並且在記事本++中以ANSI模式查看時,它看起來很好。所以我猜這個文件是在WINDOWS-1252編碼。
我猜你想在你用PHP編寫的文件中使用UTF8

嘗試你寫的文件之前,您的字符串的編碼轉換:

$json = mb_convert_encoding($json, "UTF-8", "WINDOWS-1252"); 

file_put_contents('../data/cameras.json', $json, LOCK_EX); 
+0

這起作用。出於某種原因,直接瀏覽文件顯示錯誤的字符,但在應用程序和響應選項卡中,它看起來很好。我知道一些配置不當(因爲瀏覽也應該正確地顯示內容),但這對於以後的應用程序正在工作是個問題。謝謝。 –

-1

最常見的問題是您的.json文件未保存爲UTF-8。用記事本打開文件,並保存爲UTF-8。還要確保你的PHP文件是UTF-8。

+1

這是不可靠的,這個文件是不時自動生成的(如問題中所述)。我無法等待它生成,然後每次都手動重新轉換它。 –

+0

下次應該多關注這個問題,只有在我發佈了一個答案之後,我才意識到這個文件已經生成了。 –