php$_GET不会';不能正确使用ISO-8859-1字符


php $_GET doesn't work correctly with ISO-8859-1 characters

我得到了一个数据库,它在几个字段中包含重音字母(如"é"等)。如果我在页面上回显这些,它们就会正确显示,因为我在渲染html:时使用了这个html标记

<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中设置编码的代码。我只使用元标签,如上所述。

我的代码出了什么问题?

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

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

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