为啥这个 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>
) 中。在文字处理器中,段落 分隔符通常使用键盘RETURN
或ENTER
输入;线 分隔符通常使用修改后的RETURN
或ENTER
输入,例如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 中出现错误,而不是在我创建的组件中,如何撤消这个?