在Python中编码时,在常规字符串中选择Unicode字符串是一种很好的做法吗?我主要在Windows平台上工作,目前大多数字符串类型都是Unicode(即.NET String,'_UNICODE'默认在新的c ++项目中打开,等等).因此,我倾向于认为使用非Unicode字符串对象的情况是一种罕见的情况.无论如何,我很好奇Python从业者在现实世界的项目中做了什么.
Mik*_*nov 19
从我的实践 - 使用unicode.
在一个项目开始时,我们使用了usuall字符串,但是我们的项目正在增长,我们正在实现新功能并使用新的第三方库.在那个带有非unicode/unicode字符串的混乱中,一些函数开始失败.我们开始花时间本地化这些问题并修复它们.但是,一些第三方模块不支持unicode,并在我们切换到它后开始失败(但这是排除规则).
当我们需要重写某些第三方模块(例如SendKeys)时,我也有一些经验,因为它们不支持unicode.如果从一开始就用unicode完成它会更好:)
所以我认为今天我们应该使用unicode.
PS所有那些混乱只是我的hamble意见:)
Len*_*bro 13
是的,使用unicode.
一些提示:
当以任何种类的二进制格式进行输入输出时,在读取之后直接解码并在写入之前直接编码,这样您就不需要混合字符串和unicode.因为混合往往会导致UnicodeEncodeDecodeErrors迟早.
[忘了这个,我的解释让它更令人困惑.这只是移植到Python 3时的一个问题,你可以关心它.
使用Unicode的常见Python新手错误(不是说你是新手,但这可能是新手阅读):不要混淆编码和解码.请记住,UTF-8是一个编码,因此您将Unicode编码为UTF-8并从中进行编码.
不要陷入将Python中的默认编码(通过sitecustomize.py中的setdefaultencoding或类似设置)设置为您最常使用的任何内容的诱惑.如果您重新安装或移动到另一台计算机或突然需要使用其他编码,这只会给您带来问题.要明确.
请记住,并非所有Python 2s标准库都接受unicode.如果你提供一个方法unicode并且它不起作用,但它应该,尝试喂它ascii并查看.示例:urllib.urlopen(),如果您为其提供unicode对象而不是字符串,则会失败并返回无用的错误.
嗯.这就是我现在能想到的一切!
在Python 2.x中持续使用unicode字符串可能会很棘手 - 不管是因为有人无意中使用了更自然的str(blah)意思unicode(blah),忘记了u字符串文字的前缀,第三方模块不兼容 - 无论如何.所以在Python 2.x中,只有在必要时才使用unicode,并准备提供良好的单元测试覆盖率.
如果您可以选择使用Python 3.x,则无需关心 - 字符串将是unicode而无需额外的努力.
| 归档时间: |
|
| 查看次数: |
3385 次 |
| 最近记录: |