python程序采用unicode编码,用python编写unicode程序<=2.7

用python&lt;=2.7编写unicode程序的一般指导原则是什么?在每个字符串前面加上u,即使它不包含ASCII范围之外的任何字符,这是一个好的做法吗?在

在处理sqlite3时,参数化查询会自动将unicode编码为utf-8,还是需要手动进行编码?在

在处理字节的“字符串”时,应该将其保留为字符串对象还是解码为unicode字符串?(我相信这在大多数情况下都会引发例外)

如果出于任何原因,我需要在代码中使用文本unicode字符,那么只要它是unicode字符串,并且在文件的顶部声明了编码,我可以在字符串中使用该字符吗?在

编辑:当打印unicode字符串时,如何获得用户系统的区域设置,以便能够正确编码?盲目地将所有内容编码为utf-8似乎是个坏主意,因为并非所有系统都支持它。

编辑:我想我找到了这个。可以使用locale来完成import locale

encoding = locale.getpreferredencoding()

编辑:这种编码实际上是隐式的吗?现在我很困惑。在linux上,我可以这样做

^{pr2}$

但在windows上会发生这种情况s = u'\u2c60'

print s # prints Ⱡ in IDLE, UnicodeEncodeError in cmd

print s.encode('cp1252') # UnicodeEncodeError

print s.encode('utf-8') # prints â±

print s.encode('cp1252', 'replace') # prints ?

看起来print确实隐式地进行转换。。。在

现在我在想,有没有办法让print的默认行为替换不可编码的字符?还是需要在自己的函数中包装打印内容,例如:def myPrint(msg):

print msg.encode(sys.stdout.encoding, 'replace')

我知道这些问题中的大多数已经在python3中解决了,但是我希望支持Python&lt;=2.7。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值