当前位置:   article > 正文

python的默认编码(UTF-8)_python utf-8

python utf-8

在讲解UTF-8前,首先要普及一个知识点,Unicode 。
Unicode 是一个字符编码标准,它定义了字符与整数之间的映射关系,为几乎所有已知的字符集和符号提供了唯一的标识符。Unicode 的目标是实现全球字符的标准化编码,以便字符可以在不同的计算机、操作系统和应用程序之间正确表示和传输。

以下是Unicode的一些特性:

  1. 字符映射:Unicode 将每个字符映射到一个唯一的整数值,称为 Unicode 码点。这些码点通常用十六进制表示,例如,字母 “A” 的 Unicode 码点是 U+0041。

  2. 字符集的广泛性:Unicode 包括了世界上几乎所有语言的字符,包括各种字母、数字、标点符号、表情符号、数学符号、技术符号、货币符号等等。它甚至包括一些已经不再使用的古老文字和符号。

  3. 字符范围:Unicode 的字符范围从 U+0000 到 U+10FFFF,总共有 1,114,112 个码点。这个范围被分为 17 个平面,每个平面包含 65,536 个码点。大多数常用字符都位于基本多文本平面(BMP,即平面 0)中。

  4. 编码方式:Unicode 码点可以以多种方式进行编码,最常见的是 UTF-8、UTF-16 和 UTF-32。UTF-8 是一种变长编码方式,可有效地表示各种字符,特别适合互联网和存储空间有限的情况。

  5. 兼容性:Unicode 的设计允许旧的字符编码标准(如 ASCII、ISO 8859-1 等)与 Unicode 兼容,因此可以逐渐过渡到 Unicode 而不会丧失对旧数据的支持。


  • 在python中默认的编码方式是UTF-8,计算机内部存储和处理数据时,使用的是二进制表示形式。这意味着Unicode字符在计算机内部存储时被转换为相应编码方式的二进制数据。例如,Unicode字符 “A” 在计算机内部存储时以UTF-8编码被表示为二进制数据 01000001。

下图是将一个UTF-8编码的文本文件,转为GBK文件的示意图:

第一步,类似于decode方法解码,代码如下

# 以UTF-8编码的字节串
utf_bytes = b'\xe6\xb5\x8b\xe8\xaf\x95\xe7\x9a\x84\xe6\x96\x87\xe6\x9c\xac'
# 以UTF-8编码方法解码为Unicode
text = utf_bytes.decode(encoding='utf-8', errors='ignore')
print(text )
# 测试的文本
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

将在磁盘中以utf-8编码的保存的字节串解码为Unicode的字符串

第二步,类似于decode方法解码,代码如下

# 将测试文本编码为GBK格式的字节流
gbk_bytes = text.encode(encoding='gbk', errors='ignore')
print(gbk_bytes)
# b'\xb2\xe2\xca\xd4\xb5\xc4\xce\xc4\xb1\xbe'
  • 1
  • 2
  • 3
  • 4

将在内存中Unicode字符串编码为GBK格式的字节流存入磁盘

在Python 3.x 版本中,默认的字符串编码为UTF-8。这意味着,如果不显式指定编码方式,Python 3.x 将假定文本数据是以UTF-8编码的。这是与Python 2.x 不同的重要改变,因为在Python 2.x 中,默认的字符串编码方式通常是ASCII。

在Python 3.x 中,如果使用open函数打开文件来读取文本文件,例如:

with open('text_file.txt', 'r') as file:
    data = file.read()
  • 1
  • 2

Python 3.x 是默认使用UTF-8编码来读取文件,除非我们显式指定了不同的编码方式。这种默认行为有助于确保更好地处理不同语言和字符集的文本数据。

但仍然需要注意,在某些情况下,文件可能不以UTF-8编码保存,因此,如果知道文件的实际编码方式不是UTF-8,最好显式指定正确的编码方式,以确保数据正确地解析和处理。例如,如果文件是以GBK编码保存的,可以这样打开文件:

with open('text_file.txt', 'r', encoding='gbk') as file:
    data = file.read()
  • 1
  • 2

最后再提一下,python中展示字符串都是Unicode字符组成,想要转换为Unicode编码可以使用内置函数ord(),Unicode编码转换字符使用chr()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/550954
推荐阅读
相关标签
  

闽ICP备14008679号