我遇到这个问题,我使用Javascript Ajax请求将特殊字符转换为URL作为参数,然后将其读取到PHP。角色是“Ñ”。
在我的javascript中,我将参数设置为escape('PiÑa')并转换为“Pi%D1a”
当我在我的php中阅读时,带有问号的钻石形状将会出现。以下是我的阅读方式。
escape(message) // Message being the "Pi%D1a"
就像我说的一个奇怪的角色出来的那样,当我将它保存到我的数据库postgreSQL时,它会发出错误。我该如何解决这个问题?
答案 0 :(得分:1)
D1
是“Ñ”字符的ISO-8859-1(“Latin-1”)编码形式。
“具有问号的菱形”( )是Unicode替换字符。每当你看到一个,它表示浏览器/编辑器/解释文本正在尝试将文本解释为Unicode 并且遇到一个在假定的Unicode编码中无效的字符
换句话说,这个角色实际上是拉丁文1编码的,但你告诉浏览器它(可能)是UTF-8编码的。您的编码不匹配。通过Content-Type: text/html; charset=XXX
标题告诉浏览器正确的编码,或者在使用它之前将字符从Latin-1转换为UTF-8。
答案 1 :(得分:0)
您是否尝试过使用urldecode($message)
?
%D1
是Ñ。