Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Python:使用区域设置模块更改编码_Python_Encoding_Utf 8_Locale_Setlocale - Fatal编程技术网

Windows Python:使用区域设置模块更改编码

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

使用Python2.7

我正在写一个抽象的网页刮板,在显示(打印)某些字符时遇到问题

我从打印包含字符的字符串中得到了回溯错误:
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')