簡體   English   中英

打印字符串文字unicode作為實際字符

[英]Print string literal unicode as the actual character

在我的Java應用程序中,我傳遞了一個如下所示的字符串:

“\\ u00a5123”

將該字符串打印到控制台時,我得到與輸出相同的字符串(如預期的那樣)。

但是,我想通過將unicode轉換為實際的日元符號(\\ u00a5 - >日元符號)來打印出來 - 我將如何進行此操作?

即所以它看起來像這樣:“[日元符號] 123”

我寫了一個小程序:

public static void main(String[] args) {
    System.out.println("\u00a5123");
}

它的輸出:

¥123

即它輸出的確與您在帖子中所述的內容完全相同。 我不確定是否還有其他事情發生。 您使用的是哪個版本的Java?

編輯:

為了回應您的澄清,有幾種不同的技術。 最簡單的方法是查找“\\ u”后跟4個十六進制代碼字符,提取該片段並用帶有十六進制代碼的unicode版本替換(使用Character類)。 這當然假設字符串前面沒有\\ u。

我不知道任何特定的系統來解析String,好像它是一個編碼的Java字符串。

如前所述,必須解析這些字符串以獲得所需的結果。

  1. 使用\\ u作為分隔符對字符串進行標記。 例如: \接\受 => { "63A5", "53D7" }

  2. 處理這些字符串如下:

     String hex = "63A5"; int intValue = Integer.parseInt(hex, 16); System.out.println((char)intValue); 

你可能不得不為這些寫一個解析,除非你可以在第三方庫中找到一個。 JDK中沒有任何內容可以解析這些內容,我知道,因為我最近有一個想法是使用這種類型的轉義作為通過僅限Latin-1的數據庫走私unicode的方法。 (我最后做了別的事btw)

我會告訴你java.util.Properties在讀取和寫入文件時以這種方式轉義和轉換Unicode字符(因為文件必須是ASCII)。 它用於此的方法是私有的,因此您無法調用它們,但您可以使用JDK源代碼來激發您的解決方案。

可以用以下代替上面的內容:

System.out.println((char)0x63A5);

這是打印所有盒子構建unicode字符的代碼。

public static void printBox()
{
    for (int i=0x2500;i<=0x257F;i++)
    {
        System.out.printf("0x%x : %c\n",i,(char)i);
    }
}

暫無
暫無

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

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