如何解码 php 上的字符串。 iconv 解码不起作用
how to decode string on php. iconv decode is not work
要求
http://a.com/?q=\xC3\xA2\xB0\xED
来源
$str1 = "\xC3\xA2\xB0\xED";
$str2 = '\xC3\xA2\xB0\xED';
$str3 = $_GET['q'];
echo "string1 : " . mb_detect_encoding($str1) . "<br>";
echo iconv("CP949", "UTF-8", $str1) . "<br>";
echo "string2 : " . mb_detect_encoding($str2) . "<br>";
echo iconv("CP949", "UTF-8", $str2) . "<br>";
echo "string3 : " . mb_detect_encoding($str3) . "<br>";
echo iconv("CP949", "UTF-8", $str3) . "<br>";
回应
string1 : UTF-8
창고
string2 : ASCII
\xC3\xA2\xB0\xED
string3 : ASCII
\xC3\xA2\xB0\xED
$str2, $str3 解码失败..
我该如何解决?
为什么不同.. 单引号字符串 VS 双引号字符串
版本:PHP7.1.30
提前致谢
当您对字符串使用单引号时,每个字符都是原样并且 php 不解释它,因此 $str2 无法转换为另一种编码。
此外,查询字符串假定为单引号字符串,因此 $str3 类似于 $str2。
解决方案是stripcslashes。它实际上将单引号字符串转换为双引号字符串。
你可以这样修复:
$str2 = '\xC3\xA2\xB0\xED';
$str2 = stripcslashes($str2);
$str3 = $_REQUEST["q"];
$str3 = stripcslashes($str3);
要求 http://a.com/?q=\xC3\xA2\xB0\xED
来源
$str1 = "\xC3\xA2\xB0\xED";
$str2 = '\xC3\xA2\xB0\xED';
$str3 = $_GET['q'];
echo "string1 : " . mb_detect_encoding($str1) . "<br>";
echo iconv("CP949", "UTF-8", $str1) . "<br>";
echo "string2 : " . mb_detect_encoding($str2) . "<br>";
echo iconv("CP949", "UTF-8", $str2) . "<br>";
echo "string3 : " . mb_detect_encoding($str3) . "<br>";
echo iconv("CP949", "UTF-8", $str3) . "<br>";
回应
string1 : UTF-8
창고
string2 : ASCII
\xC3\xA2\xB0\xED
string3 : ASCII
\xC3\xA2\xB0\xED
$str2, $str3 解码失败.. 我该如何解决? 为什么不同.. 单引号字符串 VS 双引号字符串
版本:PHP7.1.30
提前致谢
当您对字符串使用单引号时,每个字符都是原样并且 php 不解释它,因此 $str2 无法转换为另一种编码。
此外,查询字符串假定为单引号字符串,因此 $str3 类似于 $str2。
解决方案是stripcslashes。它实际上将单引号字符串转换为双引号字符串。
你可以这样修复:
$str2 = '\xC3\xA2\xB0\xED';
$str2 = stripcslashes($str2);
$str3 = $_REQUEST["q"];
$str3 = stripcslashes($str3);