【问题标题】:PHP: Special Characters ConversionPHP:特殊字符转换
【发布时间】:2013-03-22 06:28:46
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 试试 escapeshellarg().. 这可能会解决你的问题
  • 甚至可能是BOM 问题
  • @Fred 你确实对 BOM 有着不健康的痴迷。
  • @deceze 哈哈!在某种程度上,但不能把它排除在等式之外。必须尝试所有可能性;-)

标签: php character special-characters


【解决方案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。

【讨论】:

  • 是的,这是真的。而不是“Ñ”,而是出现“带问号的菱形”(�)。让我试试。谢谢大家
【解决方案2】:

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

%D1 是 Ñ 的 URL 编码表示。

【讨论】:

    猜你喜欢
    • 2012-07-10
    • 2012-09-02
    • 1970-01-01
    • 2013-11-29
    • 2019-08-02
    • 2017-05-30
    • 2011-11-17
    • 1970-01-01
    • 2013-10-03
    相关资源
    最近更新 更多