清楚标注,不是神秘方块
每个字符都附有 Unicode 名称、码位、分类、宽度,以及软件是否把它视为空白符。当某个空白名字失效时,你能确切知道自己粘贴了什么,以及接下来该试什么。
复制空白和隐形 Unicode 字符,查看它们的码位以及通常在哪些场合有效;生成最多 1,000 个字符的字符串;还可以粘贴任意文本,找出其中已有的隐藏字符。
所有内容都在此标签页中生成和检查。你在这里复制或粘贴的任何内容都不会被发送到任何地方。
份“韩文填充符”(U+3164),合成一个字符串
看不见的字符串仍然有长度,而不同的系统衡量方式不同。
许多网页表单和 JavaScript 计数器按 UTF-16 码元计数,而数据库和字节限制按 UTF-8 计算。UTF-8 对 U+0080 以下的字符使用 1 个字节,U+0800 以下使用 2 个,U+10000 以下使用 3 个,更高的使用 4 个,因此每份“韩文填充符”占用 3 个字节。
ㅤ\u3164\3164%E3%85%A4每张卡片都会显示码位、所属分类、是否留下可见间隙,以及软件是否把它视为空白符。预览会用你自己的字体把它画在两个标记之间。
填充字符是字形为空的字母或符号。它们不是空白符,所以常常能通过去除空格的检查,这也是空白名字通常会用它们的原因。它们也是应用最常按码位屏蔽的字符,缺少相应字形支持的字体可能会显示方框。
零宽字符完全不占空间。它们经常被删除,而只含有它们的输入框通常被视为空,所以它们更适合藏在文本里,而不是单独作为空白文本使用。
Unicode 空格会显示真实的间隙,并算作空白符,所以大多数输入框会去除首尾的这类空格。在可见字符之间,它们通常能保留下来,而且网页不会像合并普通空格那样合并连续的这类空格。
一个韩文占位字母,沿袭自较早的编码标准,在其中用来标记音节中的空位。
实际情况:最有名的空白名字字符。它是字母而不是空白符,所以常常能通过会去除空格的输入框;它也是最常被按码位屏蔽的字符。
用独立的韩文字母拼合音节时,填补空缺的初声(首辅音)位置。
实际情况:韩文填充符被拒绝时常被拿来尝试。它看起来有多宽取决于字体,不支持韩文字母的字体可能显示方框。
用独立的韩文字母拼合音节时,填补空缺的中声(元音)位置。
实际情况:通常显示为零宽度,或与前一个字符合并。在支持的字体中,它跟在初声填充符后面时,两者会组成一个空的音节块。
韩文填充符的半角形式,为兼容较早的东亚字符集而保留。
实际情况:一个较窄的空白字符,表现往往与韩文填充符相似。不含半角形式的字体可能显示方框。
没有任何凸点的盲文方格:一个真正的符号,打印出来是空方格。
实际情况:它是符号而不是空白符,所以常常不会被去除。常用于空消息和空行;读屏软件可能会朗读它。
标记一个可以换行但不显示空格的位置,用于词与词之间不加空格的语言。
实际情况:经常被删除,或在单独使用时被视为空。在文本中它仍算一个字符,所以含有它的单词无法再被精确搜索匹配。
阻止两个相邻字母连成连字或连写形式。波斯文和多种印度文字都依赖它。
实际情况:真实的语言需要它,所以它不太容易被从文本中过滤掉,但只含有它的输入框通常仍被视为空。
要求相邻字符连接在一起。它是组合表情符号(如家庭和职业序列)内部的黏合剂。
实际情况:删除它会把组合表情符号拆回各个部分。单独放在输入框里时它不可见,且常被视为空。
阻止在其所在位置换行,且不添加任何空格。它从零宽不换行空格那里接过了这项工作。
实际情况:适合让数字和单位、或两个单词保持在同一行。单独放在输入框里时通常被视为空。
最为人熟知的身份是文件开头的字节顺序标记。它在文本中连接单词的作用已交给词连接符。
实际情况:粘贴用字节顺序标记保存的文件内容后,第一列出错或比较失败的常见隐藏原因。JavaScript 会把它当作空白符去除。
在蒙古文中分隔词尾元音。在 Unicode 6.3 把它重新归类为格式字符之前,它一直算作空格。
实际情况:旧软件可能仍把它视为空白符,新软件通常不会,所以它的表现不如这里的大多数字符一致。
一种不可见的组合标记,能让重音符号保持固定顺序,并在排序时防止两个字母被当作一个单位。
实际情况:它会附着在前一个字符上,所以不能单独出现在空输入框中。比起生成空白文本,它更适合藏在文本里。
正常宽度的空格,阻止在此处换行。
实际情况:和其他空格一样,在大多数输入框的首尾会被去除;但在词与词之间,网页不会合并连续的不换行空格,所以能保留间隙。
宽度为半个 em,1 em 等于当前字号。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
宽度为 1 em,等于当前字号。
实际情况:在个人简介中缩进或拉开一行间距的常用方法,因为连续的 Em 空格不会像普通空格那样被合并。
三分之一 em,通常接近普通的词间空格。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
四分之一 em。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
六分之一 em,一种较窄的排版空格。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
在数字等宽的字体中与一个数字同宽,用于对齐数字列。它不允许换行。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
与句点同宽,用于标点旁的间距。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
约为五分之一 em,用于数字分组之间和某些标点旁。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
Unicode 空格中最细的一种,比细空格还窄。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
不允许换行的细空格。法文标点和某些数字格式会用到它。
实际情况:日期和时间解析失败的常见隐藏原因,因为有些软件在格式化时间时会把它放在 AM 和 PM 前面。
十八分之四 em,用于数学公式中的间距。
实际情况:会被视为空白符,所以通常会从输入框首尾去除,但在词与词之间会保留,且不会被合并。
与一个中文、日文或韩文字符同宽,是东亚输入法输入的空格。
实际情况:明显的宽间隙。它属于空白符,所以通常会从输入框首尾被去除。
每个平台过滤这些字符的方式都不同,规则也会变化,所以这些说明描述的是通常会发生的情况,而不是某个具体应用的做法。隐形字符仍然是字符:它可能破坏搜索和代码,有些服务还会把空白名字视为垃圾信息。请负责任地使用。
粘贴表现异常的文本:怎么搜都匹配不上的关键词、总是验证失败的密码、无法排序的列。每个隐形字符或不常见的空格都会标出码位和位置。
在上方粘贴文本或载入示例,每个隐形字符都会以带标签的标记形式出现在它所在的位置。
隐形字符并不是同一种东西。韩文填充符这类填充符是字形为空的字母,所以大多数表单执行的去除首尾空白操作不会动它们。零宽字符是完全不占空间的格式控制符,很多应用会把它们删掉。Unicode 空格会显示真实的间隙,但属于空白符,所以在去除首尾空白的输入框里,它们会从两端消失,却能在词与词之间保留下来。知道一个字符属于哪一类,就能预判它的大部分表现;检测器则反过来利用同样的知识,找出你从未打算粘贴的字符。
从 25 个已标注的字符中选择,或从预设开始:空白名字、空消息、个人简介中的间距或空行。每张卡片都会显示码位、分类以及它是否留下间隙。
生成 1 到 1,000 份副本,合并为一个字符串。面板会在两个标记之间画出它的宽度,并给出以字符、UTF-16 码元和 UTF-8 字节计的长度,然后一键即可复制。
把任何表现异常的文本粘贴到检测器中。每个隐藏字符都会标出码位、行号和列号,一个按钮就能把它们全部删除,方便你复制清理后的文本。
每个字符都附有 Unicode 名称、码位、分类、宽度,以及软件是否把它视为空白符。当某个空白名字失效时,你能确切知道自己粘贴了什么,以及接下来该试什么。
空白文本在肉眼看来是空的,在数据库里却可能占 30 个字节。生成器并排显示字符数、UTF-16 码元和 UTF-8 字节数,因为表单限制、数据库字段和社交网络可能各自衡量不同的指标。
可以复制 HTML 实体、JavaScript 转义、CSS 转义或百分号编码形式。写 \u200B 而不是直接粘贴原始字符,能让刻意放置的隐形字符对下一个阅读代码的人保持可见。
字节顺序标记、零宽空格、窄不换行空格、方向控制符、变体选择符、标签字符和控制码,都会在原位置显示标记,并附上名称、行号和列号。
删除时会保留把组合表情符号或字符变体连在一起的连接符和选择符,并把不常见的空格转换为普通空格,而不是让单词粘在一起。撤销可以恢复原文。
说明只会告诉你哪些通常有效、哪些通常会被删掉,绝不声称哪个应用接受什么。每个平台都按自己的方式过滤这些字符,而且规则会在没有通知的情况下改变。
最可靠的方法是复制,这正是本页按钮的用途。有几个字符可以直接输入:在 Windows 上,按住 Alt 键并在数字小键盘上输入 0160,就能得到不换行空格;在 Mac 上,许多键盘布局下按 Option 加空格键效果相同。许多 Linux 桌面支持按 Ctrl、Shift 和 U,再输入 200b 这样的十六进制代码。在 Microsoft Word 中,可以输入 3164 这样的代码,再按 Alt 加 X 进行转换。在源代码里,请改为书写 \u200B 或 ​ 这样的转义,让下一个读者能看到它的存在。
U+3164 是韩文兼容字母区块中的字符,沿袭自一项较早的韩文编码标准,在其中用来标记音节中的空位。Unicode 把它归类为字母而不是空格,所以去除空白符的软件不会动它。正是这一点让它成为最有名的空白名字字符,也正因如此,一些应用现在会按码位屏蔽它。不支持韩文的字体可能会把它显示为方框,而不是空白。
U+200B 标记一个可以换行但不显示任何空格的位置。它是为泰文、高棉文等词与词之间不加空格的语言而设的,也被用来让长 URL 能够换行。它没有宽度,所以你看不见,但它仍然是一个字符:含有它的单词,与不含它的同一个单词在搜索时不会匹配。在 URL 中,它显示为 %E2%80%8B。
先使用“空白名字”预设,它会复制一个韩文填充符,然后把它粘贴到名字输入框中。如果输入框要求最短长度,就把数量调高到满足要求。如果被拒绝,可以试试其他填充符,例如半角韩文填充符或盲文空白符,因为每个应用都有自己的过滤列表。空格单独使用很少有效,因为几乎所有表单都会把它们去除。空白名字可能违反某项服务的规则,或被标记为垃圾信息,所以请先查看你所用应用的条款。
因为每个应用都自行决定接受什么。大多数表单会去除输入框首尾的空白符,这会删掉 Unicode 空格。许多应用会刻意删除零宽字符。有些应用维护着一份直接拒绝的空白字符列表,其中常常包括韩文填充符。字体也有影响,因为字体无法显示的字符可能会显示为方框。规则会随时间变化,所以去年有效的字符今天可能已被过滤。尝试另一类字符(填充符、零宽字符或空格)是找到可用字符的最快方法。
因为每个隐形字符都是真正的字符。一个韩文填充符在人看来是一个字符,在 JavaScript 中是一个 UTF-16 码元,在 UTF-8 中是三个字节,所以十个就能填满 30 字节的限制。生成器会同时显示这三种计数,因为表单、数据库和社交网络可能各自衡量不同的指标。
把文本粘贴到本页的检测器中。每个隐形字符或不常见的空白符都会在屏幕上替换为显示其码位的标记,表格会列出每一种字符、出现次数,以及前几处出现的行号和列号。它能检测零宽字符、字节顺序标记、不换行空格和窄不换行空格、方向控制符、变体选择符、标签字符、软连字符和控制码。普通空格、制表符和换行符不会被标记。
把文本粘贴到检测器中,点击“删除隐形字符”,然后复制结果。不换行空格等不常见的空格会变成普通空格,避免单词连在一起;行分隔符和段落分隔符会变成普通换行,这两项都可以关闭。默认会保留把表情符号连在一起的连接符和选择符,所以家庭或职业表情符号不会被拆散。在 JavaScript 中,text.replace(/[\u200B-\u200D\u2060\uFEFF]/g, "") 可以删除常见的零宽字符。
常见原因是某个空格并不是 U+0020。有些软件在格式化时间时会在 AM 和 PM 前放一个窄不换行空格,有些地区设置用它作千位分隔符,而网页和文字处理软件还会带来不换行空格。它们看起来和普通空格一模一样,但期望 U+0020 的解析器会拒绝它们。把这个值粘贴到检测器中,就能准确看到其中是哪种空格。
使用 Unicode 字符本身并没有错,这些字符是为真实的排版和语言需求而存在的。某种具体用法是否被允许,取决于平台。有些服务禁止空白或具有误导性的名字,有些会把隐形文本视为垃圾信息或规避过滤的企图,而用隐藏字符绕过审核可能导致账号受限。请阅读该服务的规则,不要用隐形字符误导他人或规避安全系统。
探索不断扩充的工具合集,涵盖计算、文档、写作和日常工作。