Python 设置区域设置和字符串模块

Python 设置区域设置和字符串模块,python,localization,python-2.x,Python,Localization,Python 2.x,这张简单的纸条: from locale import LC_ALL, setlocale print setlocale(LC_ALL,"") from string import letters print letters 给我这个输出: tr_TR.utf8 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 在这里:它表示它的值依赖于语言环境,并在调用setlocale时更新。然而,我没有看到来自我所在地区的任何信件。有什么方法可

这张简单的纸条:

from locale import LC_ALL, setlocale
print setlocale(LC_ALL,"")
from string import letters
print letters
给我这个输出:

tr_TR.utf8
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

在这里:它表示它的值依赖于语言环境,并在调用setlocale时更新。然而,我没有看到来自我所在地区的任何信件。有什么方法可以获取当前语言环境的字母列表吗?

我必须明确地将语言环境设置为土耳其语,因为这不是我计算机上的默认设置,但似乎或多或少可以:

python win32上的Python 2.7.2(默认值,2011年6月12日,15:08:59)[MSC v.1500 32位(英特尔)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>从区域设置导入LC_ALL,设置区域设置 >>>打印设置语言环境(LC_ALL,“土耳其语”) 土耳其(土耳其)1254 >>>从字符串导入字母 >>>印刷信件 这是一个很好的例子。。。 ABCDEFGHIJKLMNOPQRSTUVWXYZSOYAAAAÄÆÉeeiigñoooooÉOUUUÜIS >>> 输出基本上看起来是正确的(AFAIK),除了包含了Q、W和X,这不是土耳其语字母表的一部分

更新:

为了更好地复制您的环境,我首先使用了“区域和语言选项”控制面板,并将我的区域更改为“土耳其语”,这将使其成为
setlocale
的默认设置。事实上确实如此,但是信件列表看起来还不错——所以我无法重现你的问题

这次的一个不同之处是,在运行python之前,我首先将console的代码页更改为WindowsANSITurkish1254,以允许正确显示字母表中的字符。这使得输出的最后两个字母显示正确,但是它仍然包括Q、W和X字母,它们不是字母表的一部分(在我的选项中是错误的)


+1当我将cmd.exe代码页设置为857(IBM PC土耳其语代码页)或1254(Windows ANSI土耳其语代码页)时,我得到的输出与您的相同,只是土耳其语字母显示正确。例如,对于857和1254,上面输出的最后两个字母(“…IS”)正确地输出为“…İŞ”。如果我将代码页设置为437(美式英语默认值),那么我得到的输出与您的完全相同,土耳其语字母转换为最接近的ASCII等效字母(不带重音/变音符号)。对于代码页65001(Windows UTF-8),Python生成LookupError:unknown encoding:cp65001.PS:我使用的是Python 2.7.2。@Sabuncu:如果我首先使用
chcp 1254
将cmd的代码页设置为Windows ANSI Turkish,然后重新运行我的答案中显示的语句,那么输出的最后两个字符现在是“İŞ”(运行Python 2.7.5)。输出仍然包括Q、W和X。你知道这是为什么吗?@Sabuncu:注意,在Python 3.3中,你可以使用代码页65001,这是utf-8编码。问题不仅仅是包含q、w和x。这组字符包括土耳其字母表中没有的所有其他字符:
ƒœœèèåèèèèèèèèèèèèèèèèèè232
C:\>chcp 1254
Active code page: 1254

C:\>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from locale import LC_ALL, setlocale
>>> print setlocale(LC_ALL,"")
Turkish_Turkey.1254
>>> from string import letters
>>> print letters
abcdefghijklmnopqrstuvwxyzƒšœªµºßàáâãäåæçèéêëìíîïğñòóôõöøùúûüışÿ...
  ABCDEFGHIJKLMNOPQRSTUVWXYZŠŒŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖØÙÚÛÜİŞ
>>>