Python Unicode

本文深入探讨了Python中常见的字符编码问题,特别是非ASCII字符引起的错误,并提供了具体的解决方案,包括使用正确的编码声明、如何处理Unicode字符串等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天学习Python时,遇到一个问题,Python Non-ASCII character '\xb0'

原因:字符编码问题

解决:首行加入# -*- coding: utf-8 -*-

 

codec:定义文本到二进制的字符转换

ASCII

UTF-8: 1个字节表示ASCII 完全相同        1-4个字节处理其他字符 

(单独值处理UTF-8时,会出现不能以定长字节读取字符)

UTF-16:  固定格式的2字节   分为大端形式和小端形式,不向后兼容ASCII-8

 

看个例子:写入时用UTF-16编码,读取不用UTF-16解码会出错

'''
An example of Unicode strings
using utf-8
'''
CODEC = 'utf-16'
out = u'hello world\n'
open('1.txt','w').write(out.encode(CODEC))

readin = open('1.txt','r').read()
print readin,
print readin.decode(CODEC),

 

总结:

1.程序中出现字符串时一定要加个前缀 u. 

2.不要用 str()函数,用 unicode()代替. 

3.不要用过时的 string 模块,如果传给它的是非 ASCII 字符,会把一切搞砸

4.不到必须时不要在你的程序里面编解码 Unicod 字符.只在你要写入文件或数据库或者网络时才需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值