2013-03-08 82 views
1

我試圖從客戶端JavaScript發送一個字符串到後端PHP腳本。該字符串包含特殊的引號,如JavaScript到PHP - POST編碼問題

當我在Chrome瀏覽器中查看控制檯時,可以看到它們是按照POST標題原樣發送的。在PHP方面,我立即json_encode()$_POST數組,並將其發送回來以查看其收集的內容。特殊字符現在看起來像這樣\u2019這是測試請注意我通常會清理所有發佈數據。

我想使用UTF-8,但我不知道我錯過了什麼。我的HTML包括:

<meta charset="utf-8"> 

我的PHP服務器已將UTF-8設置爲其默認字符集。

如果我開始將這樣的數據保存到數據庫,我開始以這樣的字符串結尾:âÂÂ對於。但是這不是數據庫問題在進入數據庫之前,這些字符已經很糟糕。 MySQL純粹強調它們。

任何想法?

更新

我發現,如果我返回的字符串返回的javascript不使用json_encode()那麼它與特殊引號()仍處於原始格式。

+0

''而不是meta標籤的內容? – Jon 2013-03-08 16:32:19

+0

這只是正確的輸出,UTF-8字符應該像JSON中的'\ uXXXX'一樣編碼。 @Jon:只有在HTML 5語法中才是如此。順便說一句,不要清理你的POST數據,在輸出/使用數據時使用正確的轉義/編碼。 – 2013-03-08 16:32:26

+0

它沒有被指定,所以我假設XHTML或HTML 4.x ^^但是@MarcelKorpel正確,並且在'json_encode'之後是正確的返回。 – Jon 2013-03-08 16:35:25

回答

0

原來池塘兩邊都有問題。這個問題關注的問題是PHP數據通過GET請求(url編碼)被髮送到後端。我已將其更改爲POST請求。

這使我可以在爲POST請求發送標題時指定UTF-8字符集。

0

你試過:

utf8_decode() 

在服務器端爲你傳遞的變量? PHP可能期望iso-8859-1而不是uft-8

+0

似乎將值更改爲'?'字符。 – diggersworld 2013-03-08 16:29:26

+0

好奇,剛剛發現[這個問題](http://stackoverflow.com/questions/6616240/corrupted-characters-when-jquery-ajax-sends-to-php-utf-8-iso-8859-incompatibi)沿着同樣的線條。 – 2013-03-08 16:30:42