繁体   English   中英

如何转换解码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-1ISO-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM