zoukankan      html  css  js  c++  java
  • utf-8变长

    utf-8变长

    变长规则

    一字节:0*******
    两字节:110,10*
    三字节:1110,10,10****
    四字节:11110**,10******,10,10*

    如果是以0开头的,那么他就是一个1字节编码.

    如果是以110开头的,那么他就是一个2字节编码,而且他的第二个字节一定要是10开头,不然就是乱码了.

    后面的以此类推.

    utf-8变长的算法就是把0,10,110,1110,11110这五种比特的情况用在不同的位置而区分开各种编码.这在TCP/IP网络协议中也有类似的用法.比如几类IP地址的划分.

    汉字的utf-8范围

    • 占三个字节的范围
    
    U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个  
    U+2F00 - U+2FD5 : 0xE2 0xBC 0x80 - 0xE2 0xBF 0x95 共 213 个  
    U+3005 - U+3029 : 0xE3 0x80 0x85 - 0xE3 0x80 0xA9 共 36 个  
    U+3038 - U+4DB5 : 0xE3 0x80 0xB8 - 0xE4 0xB6 0xB5 共 7549 个  
    U+4E00 - U+FA6A : 0xE4 0xB8 0x80 - 0xEF 0xA9 0xAA 共 44138 个  
    U+FA70 - U+FAD9 : 0xEF 0xA9 0xB0 - 0xEF 0xAB 0x99 共 105 个 
    
    
    • 占4个字节的范围
    
    U+20000 - U+2FA1D : 0xF0 0xA0 0x80 0x80 - 0xF0 0xAF 0xA8 0x9D 共 64029 个 
    
    

    python简单判断是否是utf-8是否是汉字的方法

    
    def is_Chinese(word):
        for ch in word:
            if not ('u4e00' <= ch <= 'u9fff'):
                return False
        return True
    
    
  • 相关阅读:
    poj 3255
    (DP) bzoj 2091
    (最短路) bzoj 2118
    (点双联通分量) poj 2942
    (树直径) bzoj 1509
    (离线处理+BFS) poi Tales of seafaring
    (并查集+DFS) poi guilds
    (记忆话搜索)POI Fibonacci Representation
    (DP) POI Bytecomputer
    (DP) bzoj 1296
  • 原文地址:https://www.cnblogs.com/agichen/p/10273802.html
Copyright © 2011-2022 走看看