python中utf-8和utf8区别_python基础-Unicode和UTF-8的区别

讲区别之前,先讲一下这两个编码的概念。

1.Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。

2.utf-8是一种针对Unicode的可变长度字符编码,换句话说utf-8是Unicode的实现方式之一,它规定了字符如何在计算机中存储、传输等。utf-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

3.两者的区别,与其说区别,不如说关系:

3.1 Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,却没有规定这个二进制编码如何存储,而utf-8是Unicode的实现方式之一。Unicode字符集既可以用utf-8编码方式编成计算机能够识别的二进制数值,也可以用utf-16,utf-32等方式编码。

3.2 utf-8根据字符对应的数字大小来确定,有可能是用一个字节表示一个字符,也可能是两个,三个.当然最多不能超过3个字节了,当遇到的大部分是英文的时候,utf-8相对而言会节省很多空间。

3.3 两者的转换:

1)Unicode转utf-8

#带u的字符串为unicode,s为字符串

#Python encode() 方法以 encoding 指定的编码格式编码字符串。

# 完整格式为s.encode(encoding='utf-8',errors='ignore')

# 简写格式

s.encode('utf-8')

2)UTF-8转换为Unicode

#ignore是指错误的处理方案为ignore,即忽略错误

# Python decode() 方法以 encoding 指定的编码格式解码字符串。默认编码为字符串编码。

# 完整格式为s.decode(encoding='utf-8',errors='ignore')

# 简写格式

s.decode('utf-8', 'ignore')#或

unicode(s, "utf-8", "ignore")

4.不得不提的ascii

python2.7默认使用的是ascii,而现在python3.x默认使用的是unicode.

一般文件使用的是utf-8或者bgk编码进行存储。但是由于python2.7默认使用ascii,所以python2.7在运行py后缀文件时也是默认以ascii编码读取文件。如果文件中没有中文不会出现问题。但是如果有中文的话,由于中文编码超出了ascii编码范围,所以python2.7将会报错。

所以我们需要在文件头部添加:

#coding:utf-8

或者#!/usr/bin/python#-*- coding: utf-8 -*-

对于中文,ascii编码是无法表示的,所以一般处理方式是默认改为“utf-8”.主要原因是,ascii编码是一种字符集,包括大小写的英文字母、数字、控制字符等,它用一个字节表示,范围是 0-127 Unicode分为utf-8和utf-16。utf-8变长度的,最多 6 个字节,小于 127 的字符用一个字节表示,与 ascii字符集的结果一样,ascii编码下的英语文本不需要修改就可以当作 utf-8 编码进行处理。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值