2011-04-01 116 views
3

在我的C程序中,我不得不将我的unicode盒子绘图字符换成DOS代码第437页的转义字符,以使它在Windows命令提示符下工作。是否可以更改gnome-terminal的代码页以便在本机编译Linux程序时正确显示这些字符?gnome-terminal是否支持DOS代码页?

谢谢。

回答

4

https://nethackwiki.com/wiki/IBMgraphics

目前的gnome-terminal不 有437代码页设置,但 它支持其他代码页 是等价的NetHack的目的, 如862(希伯来语)。

要在 GNOME终端设置代码页862:

  • 选择终端 - >设置字符Encoding->添加或删除。
  • 在左侧窗格中,选择描述希伯来语的行和编码IBM862的 。
  • 单击两个窗格之间的右箭头。
  • 单击关闭。

上述步骤只需要为Gnome 安装的一生做一次 。完成后,它是 足以:

  • 选择终端,设置字符编码,然后希伯来语(IBM862)。

应当注意的是,在Ubuntu 贾蒂当前 默认的gnome末端字体作为 只要eight_bit_tty设置为false完全支持DECgraphics。

+0

+1从Nethack的答案!然后+1对另一个答案,因为它更强大,更有意义。 ;-) – ptomato 2011-04-02 08:36:30

0

如果您需要这些字符,您应该使用正确的Unicode码值并将它们输出为UTF-8。或者,如果您愿意,可以将它们输出为宽字符,并让标准库的语言环境系统负责将它们转换为UTF-8或用户选择的另一种“原生”编码(甚至可能是CP437,尽管我已经从来没有见过系统设置很差......)。

+1

这就是我最初的做法,但是Window的命令提示符非常差,以至于默认情况下它不支持Unicode,没有解决方法,所以我将它们转换为代码页437个字符。宽字符的转换我不太了解,但通常他们最终会转到+和|而不是正确的盒子绘制字符。 – 2011-04-03 07:27:20

+0

而不是打破你的程序,并在正确的系统上需要丑陋的解决方法,我只是在Windows上做一些包装层来将Unicode转换为DOS代码页字符。 – 2011-04-03 14:36:23

+0

这不是[命令提示符](http:// homepage。 ntlworld.com./jonathan.deboynepollard/FGA/command-prompts.html),[它是一个控制台](http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/a-command-interpreter-is-not -a-console.html)和[WriteConsoleW()](http://msdn.microsoft.com/en-us/library/ms687401%28v=vs.85%29.aspx)Win32 API函数功能非常强大将Unicode写入控制台。所有这些与代码页混淆在一起的是在控制台下面在Windows NT上使用Unicode的点。 – JdeBP 2011-05-17 12:37:24