簡體   English   中英

在java中打印unicode字符

[英]Print unicode character in java

在java中顯示unicode字符顯示“?” 符號。 例如,我嘗試打印“अ”。 它的unicode編號是U+0905,html表示是“अ”。 下面的代碼打印“?” 而不是unicode字符。

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

有沒有辦法直接從unicode本身顯示unicode字符而不使用unicode數字? 即“अ”保存在文件中,現在顯示 jsp 中的文件。

Java 定義了兩種類型的流,字節和字符。

System.out.println() 不能顯示Unicode 字符的主要原因是System.out.println() 是一個字節流,只處理16 位字符的低8 位。

為了處理 Unicode 字符(16 位 Unicode 字符),您必須使用基於字符的流,即 PrintWriter。

PrintWriter 支持print() 和println() 方法。 因此,您可以像使用 System.out 一樣使用這些方法。

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

嘗試使用 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

您的myString變量包含完全正確的值。 問題必須是System.out.println(myString)的輸出,它必須將一些字節發送到某些輸出以顯示您想要查看的字形。

System.out是使用“平台默認編碼”將字符轉換為字節序列的 PrintStream - 也許您的平台不支持該字符。 例如,在我在德國的 Windows 7 計算機上,默認編碼是 CP1252,並且此編碼中沒有與您的字符對應的字節序列。

或者也許編碼是正確的,但只是從字符創建圖形字形的字體沒有那個字符。

如果您將輸出發送到 Windows CMD.EXE 窗口,那么可能這兩個原因都適用。

但請放心,您的字符串是正確的,如果您將其發送到可以處理它的目的地(例如 Swing JTextField),它將正確顯示。

Unicode 是用於打印任何字符或符號的唯一代碼。

您可以使用來自 --> https://unicode-table.com/en/ 的 unicode

下面是在 Java 中打印符號的示例。

        package Basics;
        
        /**
         *
         * @author shelc
         */
        public class StringUnicode {
        
            public static void main(String[] args) {
        
                String var1 = "Cyntia";
                String var2 = new String(" is my daughter!");
        
                System.out.println(var1 + " \u263A" + var2);
    
                //printing heart using unicode
                System.out.println("Hello World \u2665");
        
            }
        
        }
        
    ******************************************************************
    OUTPUT-->
    
    Cyntia ☺ is my daughter!
    Hello World ♥
          

我在 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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM