这是我最近遇到过几次的问题。这是我最近的经历:
尝试浏览https://www.scape.sc/release.php?id=48,该页面包含日语文本。这个页面的日文完全是乱码,显示为unicode方形字符、符号和各种拉丁重音字符。即使在html源代码中也是如此,所以我不认为这是字体选择的问题。
该网站使用我从webhint.io 文章中了解到的一种声明字符集的过时方法,<META Http-equiv="Content-Type" Content="text/html; charset=utf8">
. 尽管文章确实提到这在当今不应该成为问题。
这是我在浏览器中访问原始 html 时的样子:
<TR><TD>2.</TD><TD>記憶ã¨ç©º</TD><TD> <I>(kioku to sora)</I></TD></TR>
过去,我发现在互联网档案馆的 Wayback Machine 上搜索存在此问题的旧版本网站会正确显示日文字符。我目前的情况也是如此。
在 Wayback Machine 的以下两个示例中,第一个链接来自 2016 年的捕获,页面源和呈现的页面都使用有效/未损坏的日语字符。第二个是 2023 年的,显示的乱码与我在自己的机器上看到的一样,这让我更有信心这不是我的问题。
2016 年的原始 html:
<tr><td>2.</td><td>記憶と空</td><td> <i>(kioku to sora)</i></td></tr>
2023 年的原始 html:
<tr><td>2.</td><td>記憶ã¨ç©º</td><td> <i>(kioku to sora)</i></td></tr>
我怀疑这是网站管理员的错误,可能是 2016 年至今的某个时候在文本编辑器中对网站进行更改时出现了一些字符集不匹配。这听起来合理吗?有什么方法可以恢复“损坏的”unicode 并避免依赖 Wayback Machine 上旧的站点捕获吗?
TL;DR:网站曾经包含有效的 unicode,现在不再包含。怎么会出现这样的问题呢?最终用户能否反转/使问题文本清晰?