【问题标题】:How do I detect if a character, like "????", is a unsupported one with JavaScript?如何检测一个字符,如“????”,是否是 JavaScript 不支持的字符?
【发布时间】:2020-02-02 23:50:59
【问题描述】:

有时人们会用奇怪的东西(例如奇怪的 Unicode 组合)填写表格,以显示特殊字体。

例如:

????????????

但是,有时客户端不支持这些字符,从而导致“????”。

如何使用 JavaScript 检测故障?这可能吗?

谢谢

【问题讨论】:

  • 可能是stackoverflow.com/questions/35609728/…的骗子?我不确定。
  • “支持 JavaScript”是什么意思?您显示的字符与其他字符一样;如果你觉得不可能,你想用它做什么?
  • @MrLister 我想知道我是否可以使用纯 JavaScript 来检测这一点(无需其他技术,如一些客户端或操作系统级别的东西)

标签: javascript unicode


【解决方案1】:

最好的办法是换一种方式:

  • 您选择网络字体,以及允许的范围。 Webfont 描述为您提供了允许的字符列表,通常设计师会增强字形,从不删除字形。

  • 您的表单中只允许使用此类字符。

否则它将取决于网络浏览器。如果同一用户使用不同的浏览器(例如移动设备与计算机),则可能会看到不同的结果。因此,最好的方法(恕我直言)是从渲染中完全删除客户端字体,因此您可以使用 webfont 明确指定字形(以及如何显示它)。这与客户端/网络浏览器无关(但在非常旧的浏览器上)

【讨论】:

    【解决方案2】:

    您可以检测到满足问题中给出的用例的非字符。

    use utf8;
    use Unicode::UCD qw(charinfo);
    if (defined charinfo ord '?') {
        print 'is a character';
    } else {
        print 'is a non-character';
    }
    

    有关 JavaScript UCD 库,请参阅 https://npmjs.com/search?q=ucd

    【讨论】:

    • JS 程序员:请编辑答案并在找到合适的代码后替换代码。
    • OP 的问题肯定是字体渲染问题,而不是字符本身的问题。 Javascript 问题中的 Perl (?) 代码示例是……奇怪……
    • 是的,由于缺少字体,常规字符有时不会呈现。这更可能是 OP 的问题。
    • 评论不用于扩展讨论;这个对话是moved to chat
    猜你喜欢
    • 2016-11-04
    • 2014-06-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    相关资源
    最近更新 更多