来看一下 html 这个偏门的问题?

2018-07-13 13:03:42 +08:00
 showecho
୓(实体化:୓) 这个 html 代码是存在的,但是在网页上是无法显示的;

在 a 标签或者其他标签的时候显示为空白;

作为 input 的 value 的时候,则显示为“豆腐块”——大家可以复制这个代码(别漏后面分号)到浏览器的搜索框搜索,搜索页显示为豆腐块;

使用 js alert 结果也是豆腐块;

那么问题来了,如果我是一大片这样的 html 代码,有些能正常显示,有些是这种,怎么把这种没有识别的挖出来?
2094 次点击
所在节点    程序员
4 条回复
Librazy
2018-07-13 13:23:25 +08:00
其实这是一个 Unicode 的问题,U+0b53 并不是一个有效的字符。
https://en.wikipedia.org/wiki/Oriya_(Unicode_block)
showecho
2018-07-13 13:27:29 +08:00
@Librazy 对 确实是 unicode 的问题,如果我只知道 unicode 一个范围 比如 U+0B00 到 U+0B7F,怎么知道里面哪些 unicode 代码点是没有被分配的?

然后,既然没有被分配,为什么又有对应的 html 代码?
imn1
2018-07-13 13:34:34 +08:00
首先,显示在于客户端的字体
例如,V 站的 Node 中苹果标识我这里就显示不出来(没有相关字体),但 V 站各位 iV2er 应该没问题,都是苹果设备
所以,不能自己不显示就定义为无效字符

如果确实有需要按自己的需求过滤,可以用正则\uxxxx-\uxxxx 过滤,必要时用 unicode escape 函数转换
Librazy
2018-07-13 14:20:49 +08:00
@showecho 根据 https://www.w3.org/TR/2017/REC-html52-20171214/single-page.html#character-references HTML Character references 可以引用除 U+0000, U+000D, noncharacters, surrogates 之外的 code points,但这个 code points 不一定是一个有效的 character,能不能显示出来看的是这个字符是否有效。至于判断一个字符的有效性……我就不了解了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470546

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX