2013-03-22 237 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