我有一个简单的`url,它传递两个参数。名称和手机。但是当我使用特殊字符时,无法解码该参数。看来??而不是字符。
我已经尝试使用urldecode($_GET['name']
,rawurldecode
,html_entity_decode
,utf8_decode
,但是这些都不起作用。
我在HTML中有一个utf-8
元标记,并且我还尝试将其作为标头传递到php
内,但这没用。
代码是这样的
<?php echo $_GET['name']; ?>
答案 0 :(得分:2)
您只需使用正确的功能,即utf8_encode
:
<?php echo utf8_encode($_GET['name']); ?>
输出:
Consultório
函数utf8_encode
:
此函数将字符串数据从ISO-8859-1编码转换为 UTF-8。
请参阅文档here。
答案 1 :(得分:0)
name=Consult%F3rio
这是Consultório
网络早期的良好旧ISO-8859-1编码。如果解码后的版本显示不正确,则很可能您的应用程序根本没有使用ISO-8859-1,因此在此使用它也没有任何好处。如果您的应用使用的是UTF-8,最简单的解决方案是完全切换到UTF-8:
Consult%C3%B3rio
基本上,这是任何内置PHP函数在馈入UTF-8数据时所得到的,因为它们在字节级别工作:
var_dump(rawurlencode('Consultório')); // string(16) "Consult%C3%B3rio"
如果这恰好是您无法控制的第三方数据,请检查Martin's answer。