utf8编码

utf8编码

关于编码问题:

首先需要知道什么是编码为什么要编码, 计算机只能存储一个字节一个字节的二进制信息,所以需要把人可读的这些文字用唯一的方式在计算机内部表示出来, 但是表示的方法不唯一;

例如英文字符 就那么点 所以一个字节 也就是 8个二进制位就能给所有的进行编码,最多能给256个符号编码; 但是ASCII 编码实际只使用了 7位 所以最多编码 128个字符。

但是汉字就不行了, 常用的汉字大概6000多个, 所以 至少需要两个字节, 所以中国government给出了两个字节的编码方案, 叫做GBxxxx (国标的意思)

两个字节16位 最多 有65536 个字符, 所以 给这些汉字用是足够了,但是有个问题 如何让GB码和ASCII码互相兼容, 即这65536 个字符里面关于那些英文字符的编码 在GB码和ASCII码中要一致

方法很简单 要求所有最高位为0的编码表示的是ASCII码, 最高位为1的编码是GB码;

这样实际最多就只能表示32768个汉字了;

但是GB国标码只能在中国用, 世界人民怎么办呢?世界有那么多的语言,每种语言都应该有编码 所以有了一个叫做unicode 统一编码的东西出现了;Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符(见百度百科http://baike.baidu.com/view/40801.htm)

当然最后还有一个我们经常见到的UTF8编码, 这个是什么东西?

UTF全称 是Unicode Transformation Format 即unicode 编码的变形形式;

unicode编码是定长度的, 但是对于ASCII字符来讲 有点浪费了, 可以用一个字节表示 ASCII字符, 用多个字节表示 汉字什么的, 这就是变长度编码方式了, 那就需要对unicode编码进行一些变形;



UTF-8的定义:

0开头 latin字符
10开头 一个字符连续字节中的某一个
1111xxx 一个多字节字符的开始  前导1的个数表示字节个数 前导1后面紧跟一个0

汉字一般3个字节

unicode是统一编码
utf8是对unicode的转换编码

unicode    utf8
0xxxxxxx -> 0xxxxxxx   latin 转化成自身
00000yyy  yyxxxxxx  -> 110yyyyy  10xxxxxx  两字节 转化成 两字节
zzzzyyyy  yyxxxxxx->1110zzzz 10yyyyyy 10xxxxxx  两字节转化成三字节(一般汉字就是如此)
000wwwzz zzzzyyyy yyxxxxxx -> 11110www 10zzzzzz 10yyyyyy 10xxxxxx 三字节转化成4字节

### UTF-8 编码介绍 UTF-8 是一种可变长度的字符编码方式,广泛应用于网页和软件开发中。它是一种基于 Unicode 的编码标准,能够表示全球几乎所有的语言字符[^1]。UTF-8 使用 1 至 4 个字节为每个字符编码,具体取决于字符所在的 Unicode 区域[^2]。 在实际应用中,UTF-8 编码因其高效性和兼容性成为主流选择。例如,在 HTML 网页中设置 UTF-8 编码可以通过以下方式实现: ```html <meta charset="UTF-8"> ``` 这行代码确保网页内容以 UTF-8 格式进行解析和显示[^1]。 ### UTF-8 编码的使用方法 #### 在 Python 中使用 UTF-8 编码 Python 默认支持 UTF-8 编码。如果需要显式设置文件或字符串的编码格式,可以使用 `open` 函数并指定 `encoding='utf-8'` 参数。例如: ```python with open('example.txt', 'r', encoding='utf-8') as file: content = file.read() ``` 此外,对于 CSV 文件的编码转换,可以使用 Python 的 `codecs` 模块完成从其他编码到 UTF-8 的转换[^3]: ```python import codecs # 将文件从 GBK 转换为 UTF-8 with codecs.open('input.csv', 'r', encoding='gbk') as source_file: with codecs.open('output.csv', 'w', encoding='utf-8') as target_file: for line in source_file: target_file.write(line) ``` #### 设置 Python 默认编码为 UTF-8 虽然 Python 3 默认使用 UTF-8 编码处理字符串,但某些情况下可能需要明确设置默认编码。可以通过修改环境变量或配置文件来实现这一点[^4]。例如,在脚本开头添加以下代码: ```python import sys sys.setdefaultencoding('utf-8') ``` 注意:此方法仅适用于 Python 2.x 版本;Python 3 已内置 UTF-8 支持。 ### 总结 UTF-8 编码以其灵活性和广泛适用性成为现代编程和网络开发中的首选编码方式。无论是 HTML 网页、CSV 文件还是 Python 脚本,都可以通过简单配置实现对 UTF-8 编码的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值