默认情况下如何显示隐藏字符(零宽度空格,即​)
Posted
技术标签:
【中文标题】默认情况下如何显示隐藏字符(零宽度空格,即​)【英文标题】:How to display hidden characters by default (ZERO WIDTH SPACE ie. ​) 【发布时间】:2012-04-09 18:14:27 【问题描述】:因为这个......小丑 - 零宽度空间,我刚刚失去了部分周末。我只是使用了一些来自 google groups 的 sn-ps 并没有识别出有双字符,因为 Idea (11) 没有显示它们,这导致解析我的应用程序的配置文件出现问题......我偶然发现了它在vi中。
有没有什么方法可以在 IntelliJ 中显示这些内容(或其他方式来检查文件)而不使用外部编辑器。
IntelliJ 11 / Mac OS 10.7
编辑 - 示例
这两行在浏览器中和在 Idea 中看起来都是一样的。您可以在页面的代码中看到,在第一个注释行中,mysql://
和 localhost
之间存在隐藏的零宽度空间,这会导致问题。当然,如果您期望那个“小丑”,您可以尝试使用搜索并替换它,但是没有人会期望不应该存在的标志,特别是如果他无法以任何方式看到它。
#db.default.url="jdbc:mysql://localhost/play-fullcalendar"
db.default.url="jdbc:mysql://localhost/play-fullcalendar"
【问题讨论】:
这个角色应该被国际条约禁止。这是一种分散注意力的武器。我花了一整天的时间试图找出我的 js 控制台中出现神秘错误的原因。说真的,零宽度字符?这是解决麻烦的完美方法。 UTF 标准委员会是怎么想的? @Nick 你的评论启发了我找到为什么 UTF 包含这个小丑的东西。查看 ZeroWidthCharacter 的美感:ptiglobal.com/2018/04/26/… 【参考方案1】:一个非常简单的解决方案是使用正则表达式在文件中搜索非 ascii 字符。这将很好地突出显示有边框的所有位置。
搜索 [^\x00-\x7F]
并选中 Regex 复选框。
结果将如下所示(在暗模式下):
【讨论】:
谢谢,实际上我接受了 Vic 为解决问题而创建的插件的答案并给予奖励,该插件链接在他的答案末尾。 是的,我看到了。这是当之无愧的。但对于某些人来说,简单地进行此搜索可能是安装插件更快的解决方案。 我在 php 脚本中使用它来制作格式非常好的 html 内容,以便迁移到 WordPress:$string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
【参考方案2】:
不确定您的意思,但您可以在 Settings -> Editor -> General -> Appearance -> Show whitespaces
中永久打开和关闭显示空格。
另外,您只能在View -> Active Editor -> Show WhiteSpaces
中为当前文件设置它。
编辑:
有一些空闲时间,因为它看起来像一个流行的问题,我写了一个插件来检查代码是否存在这种异常。它被称为零宽度字符定位器,欢迎您来到give it a try。
【讨论】:
你好,维克,感谢您的回复。不幸的是,这个选项没有显示主题中提到的“零宽度空间”。我确定角色存在,因为可以用 ie 显示它。 vi,但在idea中看不到:/ 我明白了.. 我想我们将不得不等待 CrazyCoder 说它不受支持或类似的东西 :) 从 IntelliJ-14.1 开始它隐藏在Settings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
是否可以让空白处的点出价?就像在 Sublime 中一样
@WillSewell,您可以通过选择Settings -> Editor -> Color Scheme -> General
来影响颜色,然后在该类别中转到Text -> Whitespaces
。我将我的从默认的 Foreground #505050 更改为 #404040 ,发现它们可见但不会分散注意力以上是关于默认情况下如何显示隐藏字符(零宽度空格,即​)的主要内容,如果未能解决你的问题,请参考以下文章
删除文档中的 U+200B 零宽度空格字符(Typora显示红点)
从 Python 字符串中删除零宽度空格 unicode 字符