0

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

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

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

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

就像我说的那样,当我将它保存到我的数据库 postgreSQL 时,会出现一个奇怪的字符,它会给出一个错误。我该如何解决?

4

2 回答 2

1

D1是“Ñ”字符的 ISO-8859-1(“Latin-1”)编码形式。
“带问号的菱形” (�) 是 Unicode 替换字符。每当您看到一个,它表明浏览器/编辑器/whatever-is-interpreting-the-text 正在尝试将文本解释为 Unicode,并且遇到在假定的 Unicode 编码中无效的字符。

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

于 2013-03-22T06:46:56.367 回答
0

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

%D1是 Ñ 的 URL 编码表示。

于 2013-03-22T06:38:34.817 回答