字符集和字符编码

字符集
    规定了 某个文字 对应的 存储值(流中的二进制数据) 的一一对应关系 
    同一个文字在不同字符集 UTF-8 GBK 中对应的二进制数据是不一样的
        
    对于一个字符集 三个要素:   字库表-->字符集能表示的所有字符的范围(ASSII和Unicode和GBK都不一样)
                                编码字符集-->用一个编码值标示一个字符在字符集中的位置(codePoint)
                                字符编码-->编码字符集(字符在集中的序列号)和字符实际存储值对应关系
    
    有的字符集就不包括中文,有的字符集没有日文
    Unicode是一个编码字符集(字库表包括中日英)


字符编码存在的原因
    大家都把编码字符集当做存储值不就完事了吗,还要字符编码 干什么??
    比如对于Unicode来说,它包含所有字符,如果使用字符序号(编码字符集)来进行存储,
    那么每一个字符都需要三个字节(字符太多了),对于欧美国家用不到中文的,
    存储起来就有点浪费;这就是接下来UTF-8出现的原因了
    
UTF-8和Unicode的关系    
    Unicode的编号从0000开始一直到10FFFF共分为16个Plane(一个Plane 65535个字符)
    UTF-8仅仅实现了第一个Plane,以至于当有序列超过65535的字符时候,UTF-8就会出问题;
    UTF-8是变长的,1-3字节,每个字节的靠头标示了这是个单字节字符还是多字节字符
    
解决乱码
    GBK与Unicode 是不同的字符集,编码方式自然也不同。
    先把乱码按照本机的字符集编码,然后用乱码本身能正确标示的字符集的字符编码进行解码
    
    Unicode有两种编码方式 UTF-8 和UTF-16 
    (一般字符集是一种,就是因为unicode 为了效率问题才有了两种编码方式)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

### 字符集字符编码的区别详解 字符集(Character Set)字符编码(Character Encoding)是计算机处理文本时两个密切相关但不同的概念。以下是它们的详细区别: #### 1. 字符集的定义 字符集是指一组特定的字符集合,它定义了哪些字符可以被表示。例如,ASCII字符集包含128个字符,包括英文字母、数字一些符号[^3]。字符集的作用是规定“有哪些字符可用”,而涉及这些字符如何存储在计算机中。 #### 2. 字符编码的定义 字符编码则是将字符集中的每个字符映射为计算机能够理解的二进制形式的过程。换句话说,字符编码定义了“如何用字节表示字符”。例如,在ASCII编码中,字母`A`被编码为`01000001`[^3]。字符编码的作用是确保字符能够在计算机中正确存储传输。 #### 3. 关系与区别 - **关系**:字符集字符编码的基础。一个字符编码方案必须基于某个字符集。例如,UTF-8是一种字符编码方案,它基于Unicode字符集。 - **区别**: - 字符集仅定义了字符的集合,而字符编码则定义了这些字符如何被表示为字节序列。 - 同一个字符集可以有多种编码方式。例如,Unicode字符集可以通过UTF-8、UTF-16或UTF-32进行编码[^1]。 - 字符编码还决定了一个字符占用多少字节。例如,在GBK编码中,中文字符通常占用2个字节,而在UTF-8编码中,中文字符可能占用3个字节[^4]。 #### 4. 实际应用示例 以下是一个简单的Python代码示例,展示如何使用字符编码进行字符串的编码解码操作: ```python # 原始字符串 original_string = "你好,世界!" # 使用UTF-8编码将字符串转换为字节 encoded_bytes = original_string.encode('utf-8') print(f"UTF-8编码后的字节: {encoded_bytes}") # 使用GBK编码将字符串转换为字节 encoded_bytes_gbk = original_string.encode('gbk') print(f"GBK编码后的字节: {encoded_bytes_gbk}") # 将字节解码回字符串 decoded_string = encoded_bytes.decode('utf-8') print(f"解码后的字符串: {decoded_string}") ``` #### 5. 总结 字符集字符编码是文本处理中可或缺的概念。字符集定义了字符的范围,而字符编码则定义了字符的存储方式。在实际开发中,选择合适的字符集编码方式对于确保数据的正确性兼容性至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值