代码之家  ›  专栏  ›  技术社区  ›  Salim Fadhley

是否可以将区域设置重置为可移植区域设置?

  •  1
  • Salim Fadhley  · 技术社区  · 15 年前

    根据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 回复  |  直到 11 年前
        1
  •  4
  •   jfs    15 年前

    你可以试试: 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)
    
        2
  •  2
  •   Jakob Bowyer    15 年前
    locale.setlocale(locale.getdefaultlocale())
    

    将其设置回标准语言环境