文本编码

本文深入探讨了文本编码,包括ASCII、GBK、Unicode、UTF-8等编码方案,解释了BOM的概念,并讨论了在不同场景下编码的选择,特别强调了UTF-8在不包含BOM的情况下是标准形式。
摘要由CSDN通过智能技术生成

文本编码

  • 文本编码这个问题自三年前就困扰着我,当时是用Python处理多国语言时出现的bug,最后问题解决了,但其中具体逻辑并不懂。后来零零散散接触了不少资料,算是大致弄明白,记录如下。

unicode与ascii等编码方案

ascii

  • ascii编码方案一共规定了128个字符对应的二进制表示,只占用了一个字节的后面7bit,最高位为0
  • 欧洲国家使用128个符号不足以表示所有字母,使用了最高位。因此不同的国家128~255表示不同的符号,并不通用,即为扩展的ascii码,包括ISO-8859-1~15。这些都是单个字节编码。
  • ISO-8859-1
    • ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。欧元符号出现的比较晚,没有被收录在ISO-8859-1当中
    • ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃
    • Latin1是ISO-8859-1的别名,有些环境下写作Latin-1

gb2312

  • 一种双字节编码,包含6763个汉字

gbk

  • 对gb2312的扩展,可以表示21003个汉字,兼容gb2312

gb18030

  • unicode的一种天朝实现
  • 采用单、双、四字节编码,兼容gb2312

base64

  • base64使用64个可打印字符表示二进制数据。每个单元包含6bit。转换后每76个单元要加上一个换行符。
  • 可打印字符包括:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值