1

我发现了很多特殊符号,比如 ♥ 和 ❦,我想在 Python 3.3 的程序中使用它们,这些程序在 IDLE 中运行良好,但是当我使用命令行运行它时,它立即崩溃,给出一个有关无法识别字符的错误:

Traceback (most recent call last):
    File "C:python33\meh.py", line 1, in <module>
        print("\u2665")
    File "C:\python33\lib\encodings\cp437.py", line 19, in encode
        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character 'u\u2665' in position 0: character maps to <undefined>

除了可以在命令行中显示之外,如何将这些符号用于map其他东西?<undefined>

我假设我可以尝试添加到 python 的 cp437.py (从错误中得出),但我不确定如何为每个符号获取十六进制/十进制/任何内容以及将其放在哪里。

带有 CEDILLA 的拉丁文大写字母 C 的示例:

--解码映射键和值: 0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA

--解码表字符串: '\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA

--编码映射键和值: 0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA

我无法判断所有符号是否都需要这三个(更不用说每个符号的作用了)。有些有解码图和表,但另一些只有解码表和编码图。

4

2 回答 2

3

您必须正确编码终端的字符。 Pragmatic Unicode,或者,How Do I Stop The Pain有详细信息。

例如:

print(my_text.encode('utf8'))
于 2012-12-02T02:22:13.433 回答
0

就个人而言,它在 Ubuntu 上对我来说就像一个魅力,它默认使用 unicode,但您可以尝试使用打印文本

import sys
TestText = "Test - āĀēĒčČ..šŠūŪžŽ" # this NOT utf-8...it is a Unicode string in Python 3.X.
TestText2 = TestText.encode('utf8')
sys.stdout.buffer.write(TestText2)

来自https://stackoverflow.com/a/3603160/160386

于 2012-12-02T06:57:48.743 回答