为啥这个 LSEP 符号出现在 Chrome 而不是 Firefox 或 Edge 上?

Posted

技术标签:

【中文标题】为啥这个 LSEP 符号出现在 Chrome 而不是 Firefox 或 Edge 上?【英文标题】:Why is this LSEP symbol showing up on Chrome and not Firefox or Edge?为什么这个 LSEP 符号出现在 Chrome 而不是 Firefox 或 Edge 上? 【发布时间】:2017-01-28 22:19:42 【问题描述】:

所以这个网页是用这些符号呈现的,它们在整个网站/应用程序中都可以找到,但在其他网站上没有。谁能告诉我

    这个符号是什么? 为什么它只在一个浏览器中显示?

【问题讨论】:

【参考方案1】:

那个字符是U+2028 Line Separator,是一种换行符。将其视为 html<br> 的 Unicode 等价物。

至于为什么会出现在这里:我的猜测是内部数据库使用 LSEP 不会与文字换行符或 HTML 标记冲突(这可能会破坏数据库或导致安全错误),或者:

    将数据库转换为 HTML 的服务器端脚本忽略了将 LSEP 替换为 <br> Chrome 只是通过将 LSEP 显示为打印(可见)字符来打破标准,或者 您安装的字体将 LSEP 显示为只有 Chrome 才能检测到的打印字符。要确定它是哪种字体,请右键单击有问题的文本并单击“检查”,然后切换到右侧面板上的“计算”选项卡。在最底部,您应该会看到标有“渲染字体”的部分,这将帮助您找到有问题的字体。

有关行分隔符的更多信息,摘自 Unicode 标准第 5.8 章,换行指南 (on p. 12 of this PDF):

行分隔符和段落分隔符

段落分隔符(与编码方式无关)用于指示 段落之间的分隔。行分隔符指示换行的位置 单独应该出现,通常在一个段落中。例如:

这是一个在这一点上带有行分隔符的段落, 导致“导致”一词出现在不同的行上,但没有导致 典型的段落缩进、断句、行距或 齐平变化(右、中或左段落)。

为了比较,行分隔符基本对应HTML<BR>,而 段落分隔符到 HTML <P> 的旧用法(现代 HTML 分隔 将段落括在<P>...</P>) 中。在文字处理器中,段落 分隔符通常使用键盘RETURNENTER 输入;线 分隔符通常使用修改后的RETURNENTER 输入,例如 SHIFT-ENTER.

记录分隔符用于分隔记录。例如,交换时 表格数据,常用格式是制表符分隔单元格并使用CRLF 在一行单元格的末尾。此功能与线不完全相同 分隔,但经常使用相同的字符。

传统上,NLF 最初是作为行分隔符(有时记录 分隔器)。它仍然用作简单文本编辑器中的行分隔符,例如 节目编辑。随着平台和程序开始处理文字处理 通过自动换行,这些字符被重新解释为代表 段落分隔符。例如,即使是像 Windows 这样简单的程序 记事本程序和 Mac SimpleText 程序解释他们平台的NLF 作为段落分隔符,而不是行分隔符。一旦NLF 被重新解释为 代表段落分隔符,在某些情况下另一个控制字符是 压入服务作为线分隔符。例如,垂直制表 VT 在 Microsoft Word 中使用。但是,行分隔符的字符选择 甚至比NLF 的字符选择更不标准化。许多互联网 协议和许多现有文本将NLF 视为行分隔符,因此 实施者不能简单地将NLF 视为段落分隔符 情况。

进一步阅读:

Unicode Technical Report #13: Newline Guidelines

General Punctuation (U+2000–U+206F) chart PDF

SE: Why are there so many spaces and line breaks in Unicode?

SO: What is unicode character 2028 (LS / Line Separator) used for?

U+2028 on codepoints.net 这里的一个错误打印表明 U+2028 是在 Unicode 标准的 v.1.1 中添加的,这是错误的——它是在 1.0 中添加的

【讨论】:

如何让浏览器正确呈现? 在我的例子中,显示字符的 css 后备字体是 Windows 10 上的 Times New Roman,所以它并不是真正可以从系统中删除的字体。由于 Edge 将其转换为空格,我猜测其他浏览器会优雅地处理此字符,而 Chrome 只是按原样显示。【参考方案2】:

我发现在 WordPress 中删除“L SEP”和“P SEP”字符最简单的方法是执行这两个 SQL 查询:

UPDATE wp_posts SET post_content = REPLACE(post_content, UNHEX('e280a9'), '')
UPDATE wp_posts SET post_content = REPLACE(post_content, UNHEX('e280a8'), '')

javascript 方式(在一些答案中提到)可能会破坏一些东西(在我的情况下,一些模态窗口停止工作)。

【讨论】:

这非常有效。对于所有使用 ACF 插件的人 - 您需要在存储 ACF 数据的不同表上运行此查询。为了做到这一点,将wp_posts替换为wp_postmeta,将post_content替换为meta_value【参考方案3】:

您可以使用此工具... http://www.nousphere.net/cleanspecial.php

...删除 Chrome 显示的所有特殊字符。

步骤: 粘贴您的 HTML 并使用 HTML 选项进行清理。

您可以在此页面的编辑器中手动删除字符并查看结果。

将您的 HTML 粘贴回文件中并保存 :)

【讨论】:

可能是因为它没有回答问题。无论如何,我发现它很有用,所以向我 +1。【参考方案4】:

我最近遇到了这个问题,尝试了许多修复,但最终我不得不将文本粘贴到 VIM 中,并且我不得不删除一个额外的空间。我尝试了许多 HTML 清理器,但都没有奏效,VIM 是关键!

【讨论】:

是的。 Sublime 也适用于此。复制到你的编辑器中,看到特殊字符,删除……嘭。【参考方案5】:

9999 年的答案很棒。

如果您将 Symfony 与 Twig 模板一起使用,我建议您检查一个空的 Twig 块。在我的例子中,它是一个空的 Twig 块,里面有一个不可见的字符。

LSEP 字符仅显示在某些设备/浏览器上。 另一方面,我在标题上方有一个空白区域,我看不到任何不可见的字符。

我必须检查 GET 请求以查看值 1f18 在打开的 html 标记之前。

一旦我移除了一个空的 Twig 块,它就消失了。

希望有一天这可以帮助某人......

【讨论】:

感谢您的回答。我正在使用 Ruby on Rails,并且这个 LSEP 符号在语言环境中的换行符之后出现在一种特殊情况下。阅读您的答案后,我只是手动重新输入了整个短语,符号消失了。原来它在那个地方是一个零宽度的空间,因为我从另一个工具复制了整个文本。【参考方案6】:

我的问题类似,是“PSEP”或“P SEP”。类似的问题,我的文件中有一个不可见的字符。

我用普通空格替换了 \x2029。固定的。此问题仅出现在 Windows Chrome 上。不在我的 Mac 上。

【讨论】:

【参考方案7】:

我同意@Kapil Bathija - 基本上您可以将您的 HTML 代码复制并粘贴到 http://www.nousphere.net/cleanspecial.php 并进行转换。

然后它将为您转换特殊字符 - 只需删除单词之间的空格,您就会意识到您必须按退格键 2 次,这意味着存在无法翻译的无效字符。

我遇到了同样的问题,之后效果很好。

【讨论】:

【参考方案8】:

您还可以复制文本,将其粘贴到 HTML 编辑器(如 Coda)中,删除换行符,将其复制并粘贴回您的站点。

视频在这里:https://www.loom.com/share/501498afa7594d95a18382f1188f33ce

【讨论】:

【参考方案9】:

看起来我的客户在最初使用 MS-Word 创建 HTML 后将其粘贴到 Wordpress 中。即使删除 和可见空格也不能解决问题。扩展字符在 vi/vim 中可见。

如果您没有可用的 vi/vim,请尝试从 LSEP 之前的 2 个字符突出显示到 LSEP 之后的 2 个字符;删除该块,然后重新输入正确的字符。

【讨论】:

以上是关于为啥这个 LSEP 符号出现在 Chrome 而不是 Firefox 或 Edge 上?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个“检测到慢速网络...”日志出现在 Chrome 中?

本地(文件://)网站图标在 Firefox 中工作,而不是在 Chrome 或 Safari 中 - 为啥?

为啥我对表格的媒体查询可以在 chrome 中使用,而不是在 firefox 中使用?

在 ng build --prod 之后,为啥我在 main.js:1 和 polyfills.js:1 中出现错误,而不是在我创建的组件中,如何撤消这个?

为啥 iOS 应用评论只出现在 iTunes 中而不出现在 App Store 中

为啥弹出窗口出现在底部而不是在中心?