V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
showecho
V2EX  ›  程序员

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

  •  
  •   showecho · 2018-07-13 13:03:42 +08:00 · 2210 次点击
    这是一个创建于 2323 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ୓(实体化:୓) 这个 html 代码是存在的,但是在网页上是无法显示的;

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

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

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

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

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

    如果确实有需要按自己的需求过滤,可以用正则\uxxxx-\uxxxx 过滤,必要时用 unicode escape 函数转换
    Librazy
        4
    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,能不能显示出来看的是这个字符是否有效。至于判断一个字符的有效性……我就不了解了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:56 · PVG 02:56 · LAX 10:56 · JFK 13:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.