PHP+;字符编码+;获取参数

PHP+;字符编码+;获取参数,php,character-encoding,get,Php,Character Encoding,Get,我已经实现了一个PHP脚本。 我通过以下URL运行我的PHP脚本: 因此,我将GET参数传递给我的PHP脚本。 参数名为param1。 param1包含字符串“€t€”,该字符串的URL编码为“%80t%80” 我的PHP脚本是用UTF-8标准编码的。 我想知道$_GET[“param1”]中包含的字符串采用哪种字符编码 请确保$\u GET[“param1”]上的字符编码不是UTF-8。 原因:我的PHP脚本中的以下命令导致“807480”,它是$_GET[“param1”]的十六进制表示形式

我已经实现了一个PHP脚本。
我通过以下URL运行我的PHP脚本:

因此,我将GET参数传递给我的PHP脚本。
参数名为param1。
param1包含字符串“€t€”,该字符串的URL编码为“%80t%80”

我的PHP脚本是用UTF-8标准编码的。
我想知道$_GET[“param1”]中包含的字符串采用哪种字符编码

请确保$\u GET[“param1”]上的字符编码不是UTF-8。
原因:我的PHP脚本中的以下命令导致“807480”,它是$_GET[“param1”]的十六进制表示形式

如果$_GET[“param1”]上的字符编码是UTF-8,那么前面的PHP命令将导致“e2 82 ac 74 e2 82 ac”

$_GET[“param1”]上的字符编码也不是ISO-8859-1,因为欧元符号未包含在IS0-8859-1字符集中。
要查看ISO-8859-1编码表,请转到
因此,mb_internal_encoding函数返回的PHP内部编码不适用于$_GET[“param1”],因为它是0-8859-1


有人知道$_GET[“param1”]中包含的字符串应用了哪种字符编码吗?

我不知道为什么在处理试图解决的字符编码问题时使用unpack。就这样

我想您正在尝试读取$_GET['param1']的值,如下所示:

$var=$_GET['param1'];我建议您尝试urldecode$var=urldecode($\u GET['param1']),然后使用函数处理多字节字符串 或使用iconv功能

希望以上能有所帮助

请确保$\u GET[“param1”]上的字符编码不是UTF-8。这个 原因:我的PHP脚本中的以下命令导致“807480” 它是$_GET[“param1”]的十六进制表示形式

这正是你所期待的,因为这是你所写的。参数%80t%80表示三个字符:十六进制80,“t”,十六进制80.%80表示“十六进制80”。您需要手动指定一个特定的十六进制值,字符编码根本不需要

试试这个:

var_dump( unpack ("H*", urldecode("%80t%80")));
这是:

http://server/script.php?param1=%e2%82%ac%74%e2%82%ac

我使用unpack函数只是为了测试。我需要查看表示param1中包含的字符串的字节。我的最终目标是UTF-8编码从GET参数接收的每个字符串。我计划使用mb_convert_encoding php函数,但我需要知道最初使用哪种编码来表示GET数组中的字符串。
http://server/script.php?param1=%e2%82%ac%74%e2%82%ac