为了账号安全,请及时绑定邮箱和手机立即绑定

Python Unicode编码

标签:
Python

使用技巧

事实上,只要遵守以下规则,可以规避90%由于Unicode字符串处理引起的bug,剩下的10%通过python的库和模块能够解决。

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

  • 不要用str()函数,用unicode()代替。

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

  • 不到必须时不要在你的程序里面解码unicode字符。只在你要写入文件或数据库或者网络时,才调用encode()函数;相应地,只在你需要把数据读回来的时候才调用decode()函数。


从现实中得来的教训

失误#1:你必须在一个极有限的时间内写出一个大型的应用,而且需要其他语言的支持,但是产品经理并没有明确定义这一点。你并没有考虑Unicode的兼容,直到项目快要结束……这时候再添加Unicode的支持几乎不太可能,不是吗?

结果#1:没能预测到最终用户对其他语言界面的需求,在集成他们用的面向其他语种的应用时又没有使用Unicode支持。更新整个系统即让人觉得枯燥,又浪费时间。


失误#2:在源码中到处使用string模块或者str()和chr()函数。

结果#2:通过全局的查找替换把str()和chr()替换成unicode()和unichr(),但是这样一来很可能就不能再用pickle模块,要用的话只能把所有要pickle处理的数据存成二进制形式,这样一来就必须修改数据库的结构,而修改数据库结构意味着全部推到重来。


失误#3:不能确定所有辅助系统都完全地支持Unicode。

结果#3:不得不去为那些系统打补丁,而其中有些系统可能你根本就没有源码。修复对Unicode支持的bug可能会降低代码的可靠性,而且非常有可能引入新的bug。


总结:使应用程序完全支持Unicode,兼容其它的语言本身就是一个工程。它需要详细的考虑、计划。所有涉及的软件、系统都需要检查,包括python的标准库和其他将要用到的第三方扩展模块。你甚至有可能需要组建一个经验丰富的团队来专门负责国际化(I18N)问题。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消