【问题标题】:Print unicode character in java在java中打印unicode字符
【发布时间】:2017-12-06 07:21:51
【问题描述】:

在java中显示unicode字符显示“?”标志。例如,我尝试打印“अ”。它的unicode 编号为 U+0905,html 表示为“अ”。 以下代码打印“?”而不是unicode 字符。

char aa = '\u0905';
String myString = aa + " result" ;
System.out.println(myString); // displays "? result"

有没有办法直接从unicode 本身显示unicode 字符而不使用unicode 数字?即“अ”保存在文件中,现在在jsp中显示文件。

【问题讨论】:

  • 可能是您的控制台无法或配置为显示该字符?
  • @sazzad 我已经在 servlet get 方法中尝试过这个。这里还显示“?”在浏览器中。
  • 您的请求是否返回 utf8?
  • 如果您将 .java 或 .jsp 文件保存在 utf-8 中,那么您可以在其中使用 unicode 字符而无需编码

标签: java unicode utf-8 unicode-string


【解决方案1】:

尝试使用 utf8 字符集 -

        Charset utf8 = Charset.forName("UTF-8");
        Charset def = Charset.defaultCharset();

        String charToPrint = "u0905";

        byte[] bytes = charToPrint.getBytes("UTF-8");
        String message = new String(bytes , def.name());

        PrintStream printStream = new PrintStream(System.out, true, utf8.name());
        printStream.println(message); // should print your character

【讨论】:

    【解决方案2】:

    您的myString 变量包含完全正确的值。问题一定是来自System.out.println(myString) 的输出,它必须将一些字节发送到某些输出以显示您想要查看的字形。

    System.out 是一个使用“平台默认编码”将字符转换为字节序列的 PrintStream - 也许您的平台不支持该字符。例如。在我在德国的 Windows 7 电脑上,默认编码是 CP1252,并且此编码中没有与您的字符对应的字节序列。

    或者也许编码是正确的,但只是从字符创建图形字形的字体没有那个字符。

    如果您要将输出发送到 Windows CMD.EXE 窗口,那么可能这两个原因都适用。

    但请放心,您的字符串是正确的,如果您将其发送到可以处理它的目的地(例如 Swing JTextField),它将正确显示。

    【讨论】:

      【解决方案3】:

      Java 定义了两种类型的流,字节和字符。

      System.out.println() 不能显示 Unicode 字符的主要原因是 System.out.println() 是一个字节流,只处理 16 位字符的低八位.

      为了处理 Unicode 字符(16 位 Unicode 字符),您必须使用基于字符的流,即 PrintWriter。

      PrintWriter 支持 print( ) 和 println( ) 方法。因此,您可以使用这些方法 与您在 System.out 中使用它们的方式相同。

      PrintWriter printWriter = new PrintWriter(System.out,true);
      char aa = '\u0905';
      printWriter.println("aa = " + aa);
      

      【讨论】:

        【解决方案4】:

        我在 Eclipse 中遇到了同样的问题。我通过将控制台的编码格式从 ISO-8859-1 切换到 UTF-8 解决了我的问题。您可以在 Run/Run Configurations/Common 菜单中进行操作。

        https://eclipsesource.com/blogs/2013/02/21/pro-tip-unicode-characters-in-the-eclipse-console/

        【讨论】:

          猜你喜欢
          • 2019-03-11
          • 1970-01-01
          • 1970-01-01
          • 2018-06-22
          • 2013-02-03
          • 1970-01-01
          • 2014-12-18
          相关资源
          最近更新 更多