php $_GET 不能正确处理 ISO-8859-1 字符
php $_GET doesn't work correctly with ISO-8859-1 characters
我得到一个数据库,其中包含多个字段中的重音字母(如“é”等)。如果我回显我页面上的那些,它们会正确显示,因为我在呈现我的 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 中设置编码的代码。我只使用元标记,如上所述。
我的代码有什么问题?
好的,经过进一步调查,我找到了解决方案!
$fnameraw = $_GET['fname'];
$fname = utf8_decode($fnameraw);
现在我得到了正确的输出:groté!
在我的元标记中使用 charset=ISO-8859-1 时。数据库输出和 URL 的输出都正确显示。
我得到一个数据库,其中包含多个字段中的重音字母(如“é”等)。如果我回显我页面上的那些,它们会正确显示,因为我在呈现我的 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 中设置编码的代码。我只使用元标记,如上所述。
我的代码有什么问题?
好的,经过进一步调查,我找到了解决方案!
$fnameraw = $_GET['fname'];
$fname = utf8_decode($fnameraw);
现在我得到了正确的输出:groté! 在我的元标记中使用 charset=ISO-8859-1 时。数据库输出和 URL 的输出都正确显示。