(Python 2.6)
我有一些基于客户端名称进行定制的代码。
它会做这样的事情:
custom_module = __import__("some.module.company_inc")
只要我们的客户有唯一的名字就行了。
我也想让这个代码对非ascii公司的名字正确工作。
custom_module = __import__(u"some.module.unicóde_company_inc")
但是,__import__
只接受字节,所以我需要首先对其进行编码。
__import__(u"some.module.unicóde_company_inc".encode(sys.getfilesystemencoding())
是否保证在所有系统上工作(当然,假设文件系统编码支持"ó“)?这样做对吗?(假设我不静态地知道该框使用的编码)
我对linux系统最感兴趣。(但也很高兴知道非linux的情况)
发布于 2015-10-07 11:22:45
严格地说,sys.getfilesystemencoding()
有可能在某些情况下返回None
(例如,如果没有设置LANG
)。因此,回到"utf-8“可能会稍微安全一些,以允许这种可能性(不太可能):
encoding = sys.getfilesystemencoding() or 'utf-8'
这将涵盖99.9%的案件。对于其余的部分,我只允许应用程序引发一个异常(因为它就是这样的),然后优雅地抛出一条信息丰富的错误消息。
https://stackoverflow.com/questions/32999307
复制相似问题