python - 打印日文(中文)字符

标签 python unicode

我读日语,想尝试处理一些日语文本。我使用 Python 3 尝试了这个:

for i in range(1,65535):
    print(chr(i), end='')

然后 Python 给了我很多错误。什么地方出了错?

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Traceback (most recent call last):
  File "C:\test\char.py", line 11, in <module>
    print(chr(i), end='')
  File "C:\Python31\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\x80' in position 0: character maps to <undefined>

我的理解是 chr 函数继续将 Unicode 数字转换为相应的日文字符。如果是这样,为什么不输出日语字符?为什么它在罗马字符列表的末尾崩溃?

如果我错误地理解了 Unicode 集是专门为非西方语言设计的,也请纠正我。


编辑:

我在 IDLE 中尝试了 John Machin 建议的 3 行,输出成功了!

在此之前,我一直在使用程序员的记事本,并将工具设置为捕获 python.exe 编译器的输出。也许这就是错误出现的原因。

然而,对于大多数其他事情,输出被正确捕获;那为什么它在这个过程中特别失败呢?即为什么代码在 IDLE Python Shell 中工作,而不是通过程序员的记事本输出捕获?无论界面如何,输出不应该相同吗?

最佳答案

如果你说你读日语,你必须知道日语是用四种不同类型的字符书写的:(1) 汉字(汉字)(2) 片假名 (3) 平假名 (4) 罗马字(“罗马”字母)。汉字有几万个,常用的只有几千个。

你的代码,如果它像你想象的那样工作,不仅会打印“罗马”字符,还会打印希腊语、阿拉伯语、希伯来语、西里尔语(用于俄语等)、亚美尼亚语,大约六个印度使用的不同但相关的字符集,我遗漏了很多,大约 11,000 个 Hangul Syllables(用于韩语)和一堆未使用的代码点的乱码,以及(取决于您运行的 shell in) 到达 0xD800(第一个代理项)时可能已经崩溃。

少一点野心就会给你平假名、片假名和几个“中日韩统一表意文字”。下面的示例是在 IDLE 中运行的。

>>> for i in range(0x3040, 0x30a0): print(chr(i), end='')

぀ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖ゗゘゙゚゛゜ゝゞゟ
>>> for i in range(0x30a0, 0x3100): print(chr(i), end='')

゠ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ
>>> for i in range(0x4e00, 0x4f00): print(chr(i), end='')

一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟丠両丢丣两严並丧丨丩个丫丬中丮丯丰丱串丳临丵丶丷丸丹为主丼丽举丿乀乁乂乃乄久乆乇么义乊之乌乍乎乏乐乑乒乓乔乕乖乗乘乙乚乛乜九乞也习乡乢乣乤乥书乧乨乩乪乫乬乭乮乯买乱乲乳乴乵乶乷乸乹乺乻乼乽乾乿亀亁亂亃亄亅了亇予争亊事二亍于亏亐云互亓五井亖亗亘亙亚些亜亝亞亟亠亡亢亣交亥亦产亨亩亪享京亭亮亯亰亱亲亳亴亵亶亷亸亹人亻亼亽亾亿什仁仂仃仄仅仆仇仈仉今介仌仍从仏仐仑仒仓仔仕他仗付仙仚仛仜仝仞仟仠仡仢代令以仦仧仨仩仪仫们仭仮仯仰仱仲仳仴仵件价仸仹仺任仼份仾仿

更新 您遇到问题的原因是您使用的 shell/IDE 仅提供 Windows GUI 沼泽标准标准输出,默认编码(在您的脖子上)是 cp1252(还记得在你的回溯中提到过 cp1252 吗?)这对你的罗马字来说已经足够了,但其他的就不多了。无需下载即可随处可用的替代方案:(1) IDLE (2) 写入以 UTF-8 编码的文件并在记事本中读取。我相信其他人可以建议其他 IDE。

关于python - 打印日文(中文)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352234/

相关文章:

windows - IE 比 Chrome 对 Unicode 字符的支持更好?

Python for 循环问题

python - Django 使用 try : and except:

Python csv.reader vs csv.dictreader 区别?

python - 在 Python 中对 JSON 文件进行排序并输出为 Excel

ios - 如何使用字母搜索 unicode 字符?

http - HTTP URI 可以包含非 ASCII 字符吗?

python - 在极坐标中显示

javascript - 如何比较忽略特殊字符的javascript中的字符串

c++ - 带有 Unicode 套装的卡片组