Php 特殊字符转换

Php 特殊字符转换,php,character,special-characters,Php,Character,Special Characters,我有一个问题,我使用Javascript-Ajax请求转换了一个特殊字符作为参数放在URL上,然后将其读取到PHP。字符是“ñ” 在我的javascript中,我将参数设置为escape('Piña'),并将其转换为“Pi%D1a” 当我在php中阅读它时,会出现一个带问号的菱形。我是这样读的 escape(message) // Message being the "Pi%D1a" 就像我说的,一个奇怪的字符出现了,当我把它保存到我的数据库postgreSQL时,它给出了一个错误。如何

我有一个问题,我使用Javascript-Ajax请求转换了一个特殊字符作为参数放在URL上,然后将其读取到PHP。字符是“ñ”

在我的javascript中,我将参数设置为escape('Piña'),并将其转换为“Pi%D1a”

当我在php中阅读它时,会出现一个带问号的菱形。我是这样读的

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

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

您是否尝试过使用
urldecode($message)


%D1
是以URL编码的形式表示的ñ。

D1
是以ISO-8859-1(“拉丁-1”)编码的形式表示的“ñ”字符。
“带问号的菱形”(�) 是Unicode替换字符。每当您看到一个替换字符时,它表示正在解释文本的浏览器/编辑器/任何人正在尝试将文本解释为Unicode,并且遇到在假定的Unicode编码中无效的字符


换句话说,字符实际上是拉丁1编码的,但您告诉浏览器它是(可能的)UTF-8编码。您的编码不匹配。请通过
内容类型:text/html;charset=XXX
标题告诉浏览器正确的编码,或者在使用该字符之前将其从拉丁语-1转换为UTF-8。

尝试escapeshellarg()…这可能会解决您的问题,甚至可能是
BOM
issue@Fred你确实对BOMs有一种不健康的痴迷。@deceze lol!在某种程度上,但你不能把它排除在等式之外。必须尝试所有的可能性;-)是的,这是真的。“带问号的菱形”而不是“ñ”(�) 来吧,让我试试。谢谢你们