PHP urlencode字符集编码问题

PHP urlencode字符集编码问题,php,character-encoding,urlencode,Php,Character Encoding,Urlencode,我得到了这个php脚本: $str = "ú"; echo $str . ' -> ' . urlencode($str) . "\n" ; 预期结果: ú -> %FA 参考: 实际结果 ú -> %C3%BA 试试这个: urlencode(utf8_decode($str)); 这会给你预期的结果。试试以下方法: urlencode(utf8_decode($str)); 这应该会给您预期的结果。您将编码为UTF-8(检查示例代码的编码),因此urlencode

我得到了这个php脚本:

$str = "ú";
echo $str . ' -> ' . urlencode($str) . "\n" ;
预期结果:

ú -> %FA
参考:

实际结果

ú -> %C3%BA
试试这个:

urlencode(utf8_decode($str));
这会给你预期的结果。

试试以下方法:

urlencode(utf8_decode($str));

这应该会给您预期的结果。

您将
编码为UTF-8(检查示例代码的编码),因此
urlencode
正确地将其编码为
%C3%BA

你或多或少提到了这一点:

$str = "\xFA"; # ú in LATIN-1
echo $str . ' -> ' . urlencode($str) . "\n" ;
无论您如何编码php代码/-文件,它都会为您提供预期的结果:

ú -> %FA
,该站点正在使用UTF-8存储源代码。如果要将输出显示为LATIN-1,这会向浏览器发送LATIN-1字符集的信号:

header('Content-Type: text/html; charset=latin-1');
$str = "\xFA"; # ú in LATIN-1
echo $str . ' -> ' . urlencode($str) . "\n" ;

您将
u
编码为UTF-8(检查示例代码的编码),因此
urlencode
将其正确编码为
%C3%BA

你或多或少提到了这一点:

$str = "\xFA"; # ú in LATIN-1
echo $str . ' -> ' . urlencode($str) . "\n" ;
无论您如何编码php代码/-文件,它都会为您提供预期的结果:

ú -> %FA
,该站点正在使用UTF-8存储源代码。如果要将输出显示为LATIN-1,这会向浏览器发送LATIN-1字符集的信号:

header('Content-Type: text/html; charset=latin-1');
$str = "\xFA"; # ú in LATIN-1
echo $str . ' -> ' . urlencode($str) . "\n" ;

你的问题是什么?你认为这个例子是在撒谎吗?我希望塔尔urlencode('ú')返回%FA而不是%C3%ba该字母在什么字符集?同样,@texai:是的,但不是对每一个
ú
-计算机都会根据字符集编码的不同而改变任何字符的表示方式。拉丁语-1是(
%FA
),而UTF-8不是(
%C3%BA
)。您的问题是什么?你认为这个例子是在撒谎吗?我希望塔尔urlencode('ú')返回%FA而不是%C3%ba该字母在什么字符集?同样,@texai:是的,但不是对每一个
ú
-计算机都会根据字符集编码的不同而改变任何字符的表示方式。拉丁语-1是(
%FA
),而UTF-8则不是(
%C3%BA
)。