如何解码来自用户的意外字符串?

How to decode unexpected strings from users?

我发布了一个应用,我发现一些评论是这样的:РекамедÑ

我在谷歌上搜索了很多,但我无法对其进行解码,因此评论不会以这种方式显示。这是它存储在数据库中的方式;它可以是西里尔文,但我也无法解码。关于如何理解此类评论的任何线索?

这些似乎是双重编码的 HTML 实体。例如,& 变成了 & 然后又变成了 &

当使用 this online tool(还有很多其他的)对数据进行两次解码时,结果是

РекамедÑ

这可能是 Unicode 数据,例如非西方字符集中的 UTF-8,如西里尔文或阿拉伯文,

  1. 被误解为单字节输入
  2. 被误导的 "sanitation" 方法弄乱了,可能是对 PHP 的 htmlentities() 的一两次调用(顺便假设单字节 ISO-8859-1 编码为默认在旧版本中,因此调用此函数可能是问题的全部根源)。

修复可能需要在服务器端进行。

如果您使用的是 PHP,请参阅 UTF-8 all the way through 获取方便的指南。