美文网首页
得到一个特殊字符的Unicode码

得到一个特殊字符的Unicode码

作者: shuff1e | 来源:发表于2018-03-08 00:00 被阅读30次
  • 对接后台的一个接口,返回的数据中有一段类似于这种“北京丨海淀”,然后我只想要“北京”这个词
    于是前端js随手写下'北京丨海淀'.split('|')[0],结果没取到
    当时愣了下,不过没在意,换另外一个方法继续试,还是不行,这个时候就有点懵逼了
    于是再换方法继续试,把所有的方法全都试了一遍全都不行,这个时候就有点慌了,局面好像有点控制不住了
    把所有的原因都考虑了一遍,甚至换了浏览器和电脑,试了很长时间都不行
    最后终于将目光放到了“丨”这个字符上,复制粘贴然后打印其unicode编码
    发现这个东西根本不是英文编码状态下的竖线|,而是一个拼音为gun的汉字丨
    找出了原因后,当时心情很平静,只不过是有点想把负责此接口的后端拖出来砍两刀而已
    ( ・_・)ノ⌒●~*
    链接:https://www.zhihu.com/question/21747929/answer/319675621

  • 那么如何得到一个特殊字符的Unicode码呢?例如¿的Unicode是00bf

  • 首先要了解Unicode和uft-8,utf-16的关系,明确Unicode是字符集,utf-8是编码方式,这个问题中一encode就错了
    参考链接:https://www.zhihu.com/question/23374078
    简单来说:
    Unicode 是「字符集」
    UTF-8 是「编码规则」
    其中:
    字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
    编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
    广义的 Unicode 是一个标准,定义了一个字符集以及一系列的编码规则,即 Unicode 字符集和 UTF-8、UTF-16、UTF-32 等等编码……
    Unicode 字符集为每一个字符分配一个码位,例如「知」的码位是 30693,记作 U+77E5(30693 的十六进制为 0x77E5)。
    UTF-8 顾名思义,是一套以 8 位为一个编码单位的可变长编码。会将一个码位编码为 1 到 4 个字节:
    U+ 0000 ~ U+ 007F: 0XXXXXXX
    U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX
    U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX
    U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX
    根据上表中的编码规则,之前的「知」字的码位 U+77E5 属于第三行的范围:
    7 7 E 5
    0111 0111 1110 0101 二进制的 77E5
    0111 011111 100101 二进制的 77E5
    1110XXXX 10XXXXXX 10XXXXXX 模版(上表第三行)
    11100111 10011111 10100101 代入模版
    E 7 9 F A 5
    这就是将 U+77E5 按照 UTF-8 编码为字节序列 E79FA5 的过程。反之亦然。

  • 得到一个特殊字符的Unicode码的方法有很多种

  1. Java中char的编码方式本来就是Unicode,占两个字节
public class Test
{
    public static void main(String[] args) throws Exception
    {
        int s='¿';
        System.out.println(Integer.toHexString(s));
    }
}
[root@shuffle-dev py_test]$ java Test
bf
  1. Python2中用u来指定Unicode字符串
#!/usr/bin/env python
# -*- coding: utf-8 -*-

s=u'¿'
print s.__repr__()
print s
[root@shuffle-dev py_test]$ python test.py
u'\xbf'
¿
  1. Vim作为专门给程序员用的editor,用一个简单的操作符ga就可以了
i<C-v>u00bf 就可以打印出一个¿
将光标移动到特殊字符上<ESC>ga
<¿> 191, Hex 00bf, Octal 277

相关文章

  • 得到一个特殊字符的Unicode码

    对接后台的一个接口,返回的数据中有一段类似于这种“北京丨海淀”,然后我只想要“北京”这个词于是前端js随手写下'北...

  • 字符串扩展

    字符串扩展 unicode支持\u{unicode码点} 表示unicode字符codePointAt() 字符码...

  • JavaScript中字符串与Unicode编码的互相转换

    字符串转unicode码"中".charCodeAt(0); // 20013 unicode码转字符中Stri...

  • UUNICODE与UNICHAR的作用

    UNICODE将UNICODE特殊字符转为数字,UNICHAR将数字转为unicode特殊符号

  • 10.1 Unicode

    10.1.1. 等价性问题 10.1.1.1. 简介   Unicode(统一码)包含了许多特殊字符,为了使得许多...

  • String

    字符的Unicode表示法 JavaScript可以用Unicode表示一个字符,但是只限于码点在\u0000~\...

  • ucs

    unicode编码方式 统一码(unicode)的编码方式使用的是通用字符集UCS unicode字符的平面映射本...

  • Unicode

    专业术语 统一码/国际通用码(Unicode)统一码/国际通用码联盟(Unicode Consortium)字符编...

  • Unicode

    编码 按照某一规则用二进制表示一个字符。 Unicode字符集 Unicode(统一码、万国码、单一码),是计算机...

  • 利用 Unicode 特殊字符美化文字排版

    参考: Unicode Lookup 一些可能会用到的特殊符号(Unicode) HTML特殊字符大全(unico...

网友评论

      本文标题:得到一个特殊字符的Unicode码

      本文链接:https://www.haomeiwen.com/subject/wrqefftx.html