Python 现场问题
win32上的Python 2.7.2(默认值,2011年6月12日14:24:46)[MSC v.1500 64位(AMD64)]。Python 现场问题,python,locale,Python,Locale,win32上的Python 2.7.2(默认值,2011年6月12日14:24:46)[MSC v.1500 64位(AMD64)]。 >>> locale.getdefaultlocale() ('ru_RU', 'cp1251') #ok, Russian locale is set, as per user settings >>> a = datetime.date.today() >>> a.strftime("%B %d")
>>> locale.getdefaultlocale()
('ru_RU', 'cp1251') #ok, Russian locale is set, as per user settings
>>> a = datetime.date.today()
>>> a.strftime("%B %d")
March 22' #ouch, that's not Russian.
>>> locale.setlocale(locale.LC_ALL, 'russian_russia')
'Russian_Russia.1251'
>>> a.strftime("%B %d")
'Март 22' #now it's ok
所以。。。为什么不重置默认区域设置它就不能工作?它与操作系统相关吗?是否有一种方法可以执行类似于
locale.setlocale(以某种方式转换它(locale.getdefaultlocale())
?我想做的就是根据用户的偏好显示日期。谢谢 关于区域设置需要了解的是,Python作为编程语言实现而不是应用程序,不能假定环境区域设置(通过LANG
和LC.*
环境变量)是否应应用于用Python编写的程序。因此,Python不设置区域设置。您的程序必须明确地这样做。Python会为您解析语言环境变量,这就是locale.getdefaultlocale()
返回的内容:环境指定的默认语言环境
实际使用的活动区域设置由
locale.getlocale()
返回,如果在显式设置区域设置之前运行该设置,您将看到它返回(无,无)
(表示未设置区域设置)。如果希望应用程序使用环境指定的默认区域设置,您必须调用locale.setlocale(locale.LC\u ALL')
。(空字符串表示“无论默认值是什么”,不幸的是与None
或未传递参数不同。)关于区域设置,需要了解的是,Python作为编程语言实现而不是应用程序,不能假定环境的区域设置(通过LANG
和LC.*
环境变量)应应用于用Python编写的程序。因此,Python不设置区域设置。您的程序必须显式设置。Python为您解析区域设置变量,这就是locale.getdefaultlocale()
返回:环境指定的默认区域设置
实际使用的活动区域设置由locale.getlocale()
)返回,如果在显式设置区域设置之前运行该区域设置,则会看到它返回(无,无)
(指示未设置区域设置)如果希望应用程序使用环境指定的默认区域设置,则必须调用locale.setlocale(locale.LC_ALL,”)
(空字符串表示“默认值”,遗憾的是与None
不同,或者不传递参数。)