![](/img/trans.png)
[英]How to Best Decode Special Characters in a String for SEO Purposes using PHP
[英]How to convert decode some special characters in php?
我有一个编码字符串为“%87123”。 现在,当我显示该字符串时,它应该被解码为“‡123”。 我的代码如下:
$code = '%87123';
echo urldecode($code);
die;
我尝试了许多不同的功能,例如 urldecode、rawurldecode、htmlentities、iconv 和许多其他功能。 如果有人可以为此提供帮助。 提前致谢。
看起来这是一个字符串的 url 编码版本,不是标准的UTF-8
编码(今天普遍使用,尤其是在 web 环境中),而是老式的、MS-Windows 专有的Windows-1252
编码。 这确实仍在某些 MS-Windows 版本中使用,它几乎与ISO-8859-1
或ISO-8859-15
,但作为典型的 MS 尝试有点不兼容。 你现在正遭受那个众所周知的策略的结果......
看看这个简单的示例脚本:
<?php
var_dump(urlencode('‡123'));
var_dump(urldecode('%87123'));
var_dump(iconv('Windows-1252', 'UTF-8', urldecode('%87123')));
输出是:
string(12) "%E2%80%A1123"
string(4) "�123"
string(6) "‡123"
因此,解码结果可以解释为在Windows-1252
编码的字符串。 如果是这样,然后将其转换为标准UTF-8
编码,则会得到预期的结果...
因此,您的情况很可能是在该 MS 内部编码中编码的某些字符串被注入到 Web 环境中而没有被重新编码。 由于 PHP 无法以某种方式神奇地猜测它是否完成了解码工作并提供了结果,这是一个无效的 UTF-8 编码字符串。 您必须告诉 PHP 它应该采用什么编码,这是不可能自动检测到的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.