【问题标题】:java print unicode characters to bash shell (mac OsX)java将unicode字符打印到bash shell(mac OsX)
【发布时间】:2011-06-17 10:15:09
【问题描述】:

我在 java 1.6 中有这段代码:

System.out.println("\u00b2");

但是在 OSX10.6 上的 bash 我得到问号而不是 unicode 字符...

实际上我想在扩展的 ascii 代码上打印字符 176,177,178(看这里http://www.asciitable.com/),以便在 bash 终端上创建一些艺术..

有什么想法吗?

谢谢

【问题讨论】:

  • 其实这些 un​​icode 字符就可以了.. U+2591 ░ 浅色 U+2592 ▒ 中色 U+2593 ▓ 深色 , 但 "\u2592" 似乎也不起作用..
  • 这取决于您的终端设置(以及 Java 对这些终端设置的看法),而不是真正的 shell。
  • 请注意,没有扩展ASCII之类的东西。这个页面可能意味着Codepage 437

标签: java bash unicode utf-8 character-encoding


【解决方案1】:

以下代码适用于我在 Mac OS X 10.6.7 上启用 UTF-8 的 Terminal.app:

# code taken from: 
# "Print Unicode characters to the Terminal with Java",
# http://hints.macworld.com/article.php?story=20050208053951714

echo '
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
class Test {
  public static void main (String[] argv) throws UnsupportedEncodingException {
  String unicodeMessage = "\u00b2\u2591\u2592\u2593";
  PrintStream out = new PrintStream(System.out, true, "UTF-8");
  out.println(unicodeMessage);
  }
}
' > test.java

javac test.java
java Test

【讨论】:

    【解决方案2】:

    bash 是在 UTF8 语言环境中吗?输入 locale 命令并查看您的 LANG 是否合适(例如 *en_GB.UTF-8* 之类的东西)。如果不是,请更新 LANG 的值,然后重试。

    【讨论】:

      【解决方案3】:

      首先,您需要确定终端会话中的字符编码与您的 java 应用程序输出的内容相匹配。您很可能需要 UTF-8,我认为这是 OS X 下的标准。

      接下来,您需要确定终端会话中使用的字体实际上包含您想要查看的字符。这些似乎很少见,可能并不适用于所有字体。

      【讨论】:

        【解决方案4】:

        验证 Terminal > Preferences > Encodings 是否已检查 UTF-8。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-30
          • 2015-09-14
          • 2017-12-06
          • 2011-08-13
          • 2014-08-23
          • 2018-01-21
          相关资源
          最近更新 更多