Python中不熟悉的编码

时间:2012-02-12 05:08:20

标签: python python-2.7

我正在尝试使用Python创建二进制转换器,但我遇到了一些奇怪的代码:

>>> print '\x97'
—
>>> print '\x96'
–
>>> print '\x94'
”
>>> print '\x95'
•

该编码叫什么?

2 个答案:

答案 0 :(得分:2)

该编码可能是九个Windows单字节“ANSI”编码中的任何一种,cp1250cp1258包括:

>>> guff = "\x97\x96\x94\x95"
>>> uguff0 = guff.decode('1250')
>>> all(guff.decode(str(e)) == uguff0 for e in xrange(1251, 1259))
True

用法:

1250:使用基于拉丁语的字母表的中/东欧语言,例如:波兰语,捷克语,斯洛伐克语,匈牙利语 1251:西里尔字母,例如俄罗斯
1252:具有拉丁字母的西欧语言
其他的是土耳其语,希腊语,希伯来语,阿拉伯语和越南语的单语言编码。

要了解您的计算机上正在使用的内容:

>>> import locale
>>> locale.getpreferredencoding()
'cp1252'

以下是代码的含义:

>>> from unicodedata import name
>>> for c in uguff0:
...     print repr(c), name(c)
...
u'\u2014' EM DASH
u'\u2013' EN DASH
u'\u201d' RIGHT DOUBLE QUOTATION MARK
u'\u2022' BULLET
>>>

答案 1 :(得分:1)

那将是十六进制编码。这意味着取十六进制值97,十进制为151,并在字符串中使用该字符。

字符151是em-dash,150是en-dash,148是end-double-quote,149是项目符号点,如here所示,请记住这些字符是 Unicode代码点(如上所述),但Windows code page个字符。