【发布时间】:2019-12-06 03:18:20
【问题描述】:
标题几乎概括了它。 我正在尝试在 win10 命令提示符中显示国际象棋 unicode 字符,而是显示替换字符 (�)(复制粘贴再次给我正确的字符)
强制执行 UTF-8 编码。 将 CMD Charpage 设置为 UTF-8 编码。 在我的字符串中使用 unicode 字符而不是代码。
$icons = {
"Pawn" => "\u2659", # ♙
"Rook" => "\u2656", # ♖
"Knight" => "\u2658", # ♘
"Bishop" => "\u2657", # ♗
"Queen" => "\u2655", # ♕
"King" => "\u2654", # ♔
"Black" => "\u25A0", # ■
"White" => " " #
}
class Graphics
def display_board(b);
system ("cls")
#system ("chcp 65001")
board = b.get_map();
board.each_with_index do |subarr,x|
str = "";
subarr.each_with_index do |value,y|
str += "[" + $icons[value] + "]";
end
puts(str);
end
end
end
预期结果是这样的:
[♖][♘][♗][♔][♕][♗][♘][♖]
[♙][♙][♙][♙][♙][♙][♙][♙]
[ ][■][ ][■][ ][■][ ][■]
[■][ ][■][ ][■][ ][■][ ]
[ ][■][ ][■][ ][■][ ][■]
[■][ ][■][ ][■][ ][■][ ]
[♙][♙][♙][♙][♙][♙][♙][♙]
[♖][♘][♗][♔][♕][♗][♘][♖]
实际结果: � 对于每一个棋子。
【问题讨论】:
-
您的终端使用什么代码集?终端中的不匹配将导致输出中出现类似的字符。我在为 UTF-8 设置的 Mac OS 终端中得到了合理的输出:
=> {"Pawn"=>"♙", "Rook"=>"♖", "Knight"=>"♘", "Bishop"=>"♗", "Queen"=>"♕", "King"=>"♔", "Black"=>"■", "White"=>" "} -
查看我的更新答案。您需要在 Windows 上使用支持更广泛的 UTF-8 的字体。
标签: ruby windows shell unicode cmd