【问题标题】:php $_GET doesn't work correctly with ISO-8859-1 charactersphp $_GET 不能与 ISO-8859-1 字符一起正常工作
【发布时间】:2015-12-28 15:22:57
【问题描述】:

我有一个数据库,其中包含多个字段中的重音字母(如“é”等)。如果我在我的页面上回显它们,它们会正确显示,因为我在渲染我的 html 时使用了这个 html-tag:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

但是,当我想使用 $_GET 从我的 URL 中显示参数值时,它不起作用。

我使用这个代码:

$fname = $_GET['fname'];

实际输出:

groté

期望的输出:

Groté

编码看起来不错,我使用以下代码检查了它:

var_dump($fname);
var_dump(iconv_get_encoding('all'));

输出:

string(6) "groté" 
array(3) { ["input_encoding"]=> string(10) "ISO-8859-1" ["output_encoding"]=> string(10) "ISO-8859-1" ["internal_encoding"]=> string(10) "ISO-8859-1" }

我不使用在 php.ini 中设置编码的代码。我只使用元标记,如上所述。

我的代码有什么问题?

【问题讨论】:

  • 您的代码没有问题。网站无法使用 ISO-8859-1 编码处理特殊字符。请改用 UTF-8 编码。

标签: php encoding character-encoding get iso-8859-1


【解决方案1】:

好的,经过进一步调查,我找到了解决方案!

$fnameraw = $_GET['fname'];
$fname = utf8_decode($fnameraw);

现在我得到了正确的输出:groté! 在我的元标记中使用 charset=ISO-8859-1 时。作为 URL 输出的数据库输出都正确显示。

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2015-08-25
    相关资源
    最近更新 更多