为什么HTML实体在View Source中出现乱码?

时间:2017-12-14 18:22:50

标签: google-chrome browser opera browser-bugs

多年来我在多个不同的浏览器中看到过这种行为(至少Chrome,Firefox和Opera),但最近才出现在Opera和Chrome中 - 我认为Firefox在某些时候修复了它。如果我有一个页面将相当大的数据块(数千行HTML)推送到浏览器,如果我在数据中使用任何HTML实体,则在查看源代码时会出现格式错误。

例如,我放了一个"右下方的铅笔"实体(✎ - 或✎)在整个页面内容中标记"编辑"链接。但是,当我在任何浏览器中加载同一页面并单击"查看源代码"时,我看到一个随机代码,它通常与实际硬编码到页面HTML中的内容不匹配。一些例子包括:

&x#x2#x270E;&#x#x270E;&#x270#x270E;

检查Fiddler捕获的发送到浏览器的实际源代码表明浏览器确实收到了CORRECT代码。一旦浏览器尝试在视图源选项卡中显示它,某些东西似乎就会出错。

它也与其他代码一起发生, 变为&nbnbsp;&nnbsp;等。神秘地,这些随机化每次刷新。偶尔会出现正确的问题,但大部分时间都会出现乱码。代码似乎在前端正确呈现,这只是每个主要浏览器中的错误,还是我在通过HTTP推送大量数据集时是否应该关注数据丢失?

过去的测试

我进行了两次测试以证实这一点:

(1)将单个字符压缩到公共面向AWS LAMP服务器上托管的有效HTML5页面内容中。查看Opera中的内容并查看源代码。大多数都没问题,但大约一半的时间开始绊倒,并且在整个过程中偶尔继续:

&#x27#x270E;

(2)将单个字符压缩到托管在Intranet Windows服务器上并通过NetExtender VPN提供的有效HTML5页面内容中。与第一次测试结果相同。

&#x270#x270E;✎

重现步骤:

我已经在几个不同的网络上对几个不同的系统(目前为Windows 7和10)进行了测试。但是,如果其他人能证实这一点,我将不胜感激。

  1. 创建有效的HTML页面并在正文标记之间粘贴单个HTML实体(十进制或十六进制表示)。
  2. 复制并粘贴字符以填充数百行内容(可能需要更少,但更多可能会产生相同的问题)。例如:        ...等。
  3. 将页面保存在您的网络服务器上。
  4. 在新的Opera窗口中加载页面。
  5. 右键单击页面中的任意位置,然后单击"页面源"
  6. 复制源代码并手动检查它或将其粘贴到https://validator.w3.org的W3验证器中 - 这将有助于指出格式不正确的HTML实体。
  7. Opera 49.0插图

    请参阅下面的代码检查器如何显示正确的HTML实体代码。但是,当您查看同一部分的页面源时,代码会格式不正确。

    Opera 49.0 Test - Code Inspector is correct whereas Page source is wrong

0 个答案:

没有答案