2013-03-22 171 views
0

我有這個問題,我使用JavaScript Ajax請求將一個特殊字符轉換爲URL作爲參數,然後將其讀取到PHP。字符是「Ñ」。PHP:特殊字符轉換

在我的javascript我把參數作爲逃生(「翩」),並轉換爲「皮%D1A」

當我在我的PHP讀取它帶有問號鑽石形狀會出現什麼。這是我如何閱讀它。

escape(message) // Message being the "Pi%D1a" 

就像我說的一個奇怪的字符出來,當我將它保存我的數據庫和PostgreSQL,它給出了一個錯誤。我該如何解決?

+0

嘗試escapeshellarg()..這可能會解決您的問題 – Dev 2013-03-22 06:34:00

+0

甚至可能是一個「BOM」問題 – 2013-03-22 06:36:18

+0

@Fred您*有*對BOM有不健康的癡迷。 – deceze 2013-03-22 06:43:22

回答

0

您是否嘗試過使用urldecode($message)

%D1是Ñ的URL編碼表示形式。

1

D1是「Ñ」字符的ISO-8859-1(「Latin-1」)編碼形式。
「帶問號的鑽石形狀」( )是Unicode替換字符。無論何時你看到一個,它表明瀏覽器/編輯器/無論是解釋文本正試圖將文本解釋爲Unicode,並遇到在假定的Unicode編碼中無效的字符。

換句話說,字符實際上是Latin-1編碼,但是你告訴瀏覽器它(很可能)是UTF-8編碼的。你有一個編碼不匹配。通過Content-Type: text/html; charset=XXX標題告訴瀏覽器正確的編碼,或者在使用前將字符從Latin-1轉換爲UTF-8。

+0

是的,這是真的。不是「Ñ」,而是顯示「帶問號的鑽石形狀」( )。讓我嘗試一下。多謝你們 – oneofakind 2013-04-16 03:35:18