【问题标题】:UrlEncoding giving different resultsUrlEncoding 给出不同的结果
【发布时间】:2013-08-19 16:49:18
【问题描述】:

JavaScript 函数:

var s="ì";
var e=encodeURIComponent(s);
document.write(e);

预期结果:%C3%AC 结果:%C3%AC

PHP函数:

$s = "ì";
echo $e = urlencode($s);

预期结果:%C3%AC 结果:%EC

我做错了什么?

【问题讨论】:

  • spec 明确表示 LATIN SMALL LETTER I WITH GRAVE (U+00EC) 应编码为 %C3%AC(即使用 UTF-8),而不是 %EC(ISO- 8859-1)。

标签: php url-encoding


【解决方案1】:

您的 PHP 文件可能以单字节编码方式编码,例如 ISO-8859-1。当您输入非 ASCII 字符时,它将使用该编码的字符表示。您期待 UTF-8(多字节)结果。

要获得该结果,请将您的 PHP 文件编码为 UTF-8 文件。通常,您的 IDE 会有一个选项;通常在“另存为...”对话框中。

或者,如果您不能或不想更改文件的编码,您可以这样做

echo $e = urlencode(utf8_encode($s));

【讨论】:

  • 非常感谢!一旦我能够将您的答案标记为解决方案。
猜你喜欢
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 2015-08-21
  • 2018-09-16
  • 1970-01-01
相关资源
最近更新 更多