Windows Python:使用区域设置模块更改编码
使用Python2.7 我正在写一个抽象的网页刮板,在显示(打印)某些字符时遇到问题 我从打印包含字符的字符串中得到了回溯错误:Windows Python:使用区域设置模块更改编码,python,encoding,utf-8,locale,setlocale,Python,Encoding,Utf 8,Locale,Setlocale,使用Python2.7 我正在写一个抽象的网页刮板,在显示(打印)某些字符时遇到问题 我从打印包含字符的字符串中得到了回溯错误:UnicodeEncodeError:“ascii”编解码器无法对位置5:序号不在范围(128)中的字符u'\u606'进行编码 我使用locale模块查找我的操作系统支持的设置,尽管我不确定是否应该使用locale解决我的问题,并注意到默认设置,其中(en_US',cp1252')。我试图把它改成('en_US','utf-8'),但遗憾的是没有用 #code for
UnicodeEncodeError:“ascii”编解码器无法对位置5:序号不在范围(128)
中的字符u'\u606'进行编码
我使用locale模块查找我的操作系统支持的设置,尽管我不确定是否应该使用locale解决我的问题,并注意到默认设置,其中(en_US',cp1252')
。我试图把它改成('en_US','utf-8')
,但遗憾的是没有用
#code for default settings
print locale.getdefaultlocale()
这是我用来缩小区域设置选项范围的代码。(这里没有问题,代码只是为了让任何想要的人都可以跟随)
这将提供以下输出:
[('en_ie.utf8@euro', 'en_IE.UTF-8'), ('universal.utf8@ucs4', 'en_US.UTF-8')]
这就是我的问题所在;尝试将设置更改为en_US.UTF-8
[IN]: locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' )
[OUT]: Traceback code ...
[OUT]: locale.Error: unsupported locale setting
对所有代码感到抱歉,出于某种原因,我觉得有必要这么做。检查此项
我认为在windows中,您需要设置“localewin”值,而不是区域名称。设置
locale.setlocale(locale.LC_ALL,'English_United.1252')
在windows中对我有效。我还尝试设置了不同的地区Dutch_-nertherlands.1252
,效果不错。虽然这可能无法解决UnicodeEncodeError的问题,但我认为这至少解释了您无法设置区域设置的原因。我无法解决我的问题,但我找到了一种解决方法,可以删除所有非ASCII字符。请参见堆栈答案,您需要使用全名。例如,使用:
locale.setlocale( locale.LC_CTYPE, 'Chinese (Simplified)_People\'s Republic of China' )
而不是
locale.setlocale(locale.LC_ALL,'zh_CN.cpk936')
如果这是成功的,您应该期望得到以下结果:
print(locale.getlocale(locale.LC_CTYPE))
("Chinese (Simplified)_People's Republic of China", '936')
locale.setlocale(locale.LC_ALL,'en_US.UTF-8')
对我来说很好,但我在Mac上。我对Mac一无所知,但这一定是因为它是在基于UNIX的平台上,而不是windows上。没错,你是,设置了一个注册的'localewin'值,但没有解决我的问题。虽然我的编码问题没有通过这个解决,但我的答案是。谢谢你的帮助
print(locale.getlocale(locale.LC_CTYPE))
("Chinese (Simplified)_People's Republic of China", '936')