是否可以将语言环境重置为可移植区域设置?

时间:2010-11-29 15:52:11

标签: python locale python-2.4

根据Python文档:

  

“未调用setlocale(LC_ALL, '')的程序使用便携式”C“语言环境运行。

使用setlocale(LC_ALL, '')设置区域设置后,是否可以将区域设置重置为“可移植”状态?我在一个库中工作,其中包含一些行为不端的组件,这些组件尝试将区域设置全局重置为特定区域 - 我需要找到一种方法将区域设置恢复到可移植状态。

import locale
loc = locale.getlocale(locale.LC_ALL) # get current locale
assert loc == (None, None)
# Locale is unset, therefore in the "portable" state.
locale.setlocale(locale.LC_ALL, '') # use user's preferred locale
# Loc is not set to regional default
???? DO SOMETHING HERE
assert loc == locale.getlocale(locale.LC_ALL) # I want to make this true!

需要在Windows XP 32位上运行Python 2.4.4

2 个答案:

答案 0 :(得分:3)

您可以尝试:locale.setlocale(locale.LC_ALL, loc)

>>> locale.getlocale(locale.LC_ALL)
(None, None)
>>> locale.setlocale(locale.LC_ALL, "")                                        
'en_US.utf8'
>>> locale.getlocale(locale.LC_ALL)
('en_US', 'UTF8')
>>> locale.setlocale(locale.LC_ALL, "C")                                   
'C'
>>> locale.getlocale(locale.LC_ALL)
(None, None)
>>> locale.setlocale(locale.LC_ALL, (None,None))
'C'
>>> locale.getlocale(locale.LC_ALL)
(None, None)

答案 1 :(得分:2)

locale.setlocale(locale.getdefaultlocale())

将其设置回标准区域设置