python 中文编码
Python2
Python2 中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 # coding=utf-8 就行了
注意:# coding=utf-8 的 = 号两边不要空格。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print( "你好,世界" )
Python3
在 Python 3 中,处理中文编码通常不是问题,因为 Python 3 默认使用 UTF-8 编码。这意味着你可以无缝地处理中文字符,无需进行额外的编码转换。以下是一些处理中文编码的常见场景和方法:
基本的字符串操作
在 Python 3 中,字符串类型是 Unicode 字符串,这意味着你可以直接处理中文字符:
# 直接定义中文字符串
s = "你好,世界!"
# 打印字符串
print(s) # 输出: 你好,世界!
# 长度计算
print(len(s)) # 输出: 5
# 字符串切片
print(s[0]) # 输出: 你
文件读写
当你读写包含中文的文件时,需要确保指定正确的编码:
# 写入文件
with open('example.txt', 'w', encoding='utf-8') as f:
f.write("你好,世界!\n")
# 读取文件
with open('example.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content) # 输出: 你好,世界!
处理外部数据
如果你从外部系统接收数据(如数据库、网络请求等),确保在接收和发送数据时使用 UTF-8 编码:
# 发送 HTTP 请求
import requests
response = requests.get('http://example.com/api/data', params={'q': '查询'})
response.encoding = 'utf-8' # 确保响应以 UTF-8 编码
print(response.text)
# 数据库操作
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 创建表
cursor.execute('CREATE TABLE IF NOT EXISTS data (content TEXT)')
# 插入中文数据
cursor.execute('INSERT INTO data (content) VALUES (?)', ("你好,世界!",))
# 查询中文数据
cursor.execute('SELECT content FROM data')
print(cursor.fetchone()[0]) # 输出: 你好,世界!
conn.commit()
conn.close()
命令行参数
如果你的 Python 脚本接受命令行参数,并且参数中包含中文,确保在解析这些参数时使用正确的编码:
import sys
# 假设命令行参数包含中文
if len(sys.argv) > 1:
print(sys.argv[1]) # 输出: 包含中文的参数
在大多数情况下,Python 3 的默认 UTF-8 编码已经足够处理中文字符。只有在与旧系统或特定编码要求的系统交互时,才需要特别注意编码问题。