PHP:特殊字符转换


PHP: Special Characters Conversion

我有这个问题,我转换了一个特殊字符放在URL上作为一个参数使用Javascript Ajax请求,然后读取它到PHP。字符为"Ñ"

在我的javascript中,我把参数作为转义('PiÑa'),并转换为"Pi%D1a"

当我在php中读取它时,会出现一个带问号的菱形。以下是我的解读。

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

就像我说的一个奇怪的字符出来,当我保存它我的数据库,postgreSQL,它给出了一个错误。我该如何解决这个问题?

D1是"Ñ"字符的ISO-8859-1 ("Latin-1")编码形式。
"菱形带问号"(*)是Unicode替换字符。当您看到一个时,它表示浏览器/编辑器/任何正在解释文本的东西正在尝试将文本解释为Unicode,并且遇到了在假定的Unicode编码中无效的字符。

换句话说,该字符实际上是Latin-1编码,但你告诉浏览器它(可能)是UTF-8编码。编码不匹配。或者通过Content-Type: text/html; charset=XXX头告诉浏览器正确的编码,或者在使用它之前将字符从Latin-1转换为UTF-8。

您试过使用urldecode($message)吗?

%D1是Ñ的URL编码表示。