如何在 python 中打印像 ♟ 这样的字符

How can I print characters like ♟ in python

我正在尝试在 python 2.7 中打印一个干净的棋盘,它使用独特的字符,例如♟。

我曾尝试简单地替换字符串中的一个值 ("g".replace(g, ♟)),但它被更改为 '\xe2\x80\xa6'。如果我将字符放入在线 ASCII 转换器中,它 returns "226 153 159"

是一个 unicode 字符。在python2中,str保存的是ascii字符串或者二进制数据,而unicode保存的是unicode字符串。当您执行 "♟" 时,您将获得 unicode 字符串的二进制编码版本。该编码是什么取决于您用来输入它的 editor/console 。使用 UTF-8 对字符串进行编码是很常见的(我认为是首选),但您可能会发现 Windows 编辑器更喜欢 little-endian UTF-16 字符串。

无论哪种方式,您都希望尽可能将字符串编写为 unicode。您可以在 strunicode 之间做一些 mix-and-matching 但要确保 ASCII 代码集之外的任何内容从一开始就是 unicode。

Python 可以在文件的前面进行编码提示。因此,假设您使用 UTF-8 编辑器,您可以

!@/usr/bin/env python
# -*- coding: utf-8 -*-

chess_piece = u"♟"
print u"g".replace(u"g", chess_piece)