2011-10-25 142 views
4

我無法在屏幕上顯示特殊字符(波蘭語字符)。我有一個要求,我從哪裏獲得具有特殊字符的數據庫中的數據。我以xml格式獲取數據(xml不會將其識別爲字符串),並將其傳遞給我嘗試顯示數據的操作。我試圖讓特殊字符的Uniciode爲ł,但是當我嘗試顯示時,它會轉換爲ł,所以我無法顯示它,因爲它不會將其作爲字符串。無法顯示特殊字符

String ex1="ł"; 
System.out.println("ex1...."+ex1); 
output:: ? 

我嘗試使用下面的代碼::得到Unicode的

public static String convert (String str) throws UnsupportedEncodingException 
    { 
     String tc = str; 
     String output = ""; 
     char[] ca = tc.toCharArray(); 
     for (int i = 0; i < ca.length; ++i) 
      { 
       char a = ca[i]; 
       if ((int) a > 255) 
        { 
      output += "&"+"#X"+ Integer.toHexString((int) a) + ";"; 
       } 
        else 
        { 
      output += a; 
       } 
     } 
     return output; 
    } 

輸出是:如果輸入的是作爲str="ł"然後output=&#X142;

回答

3

不要重新發明輪子!從Apache Commons Lang庫,這使得這個簡單的解決方案使用StringEscapeUtils類的escapeXml方法:

StringEscapeUtils.escapeXml(input); 
+0

當我們嘗試發送StringEscapeUtils.escapeXml(「ł」)時,我們得到的輸出是amp;&#322。但是我想將「ł」作爲輸出打印出來。 – user1010880

+0

調用'StringEscapeUtils.escapeXml(「ł」)'得到「ł」,這是你的角色的正確XML編碼。要將字符渲染回''ł',在任何客戶端正在讀取它時顯示編碼的XML,例如瀏覽器 – Bohemian

0

我不積極肯定對你的要求(不管你想要的字符作爲存儲XML,打印到控制檯等),但做你爲\ uXXXX前綴Unicode代碼點的Unicode,因此,例如

String str = "\u00F6"; 
char c = '\u00F6'; 

將是字符ö。

注意,這是離開的enter link description here

+0

這就是Java符號,而不是xml –

0

當你想要寫在控制檯窗口使用波蘭語字符(重定向的System.out !!!)

看: UTF-8 CJK characters not displaying in Java

我測試:

System.setOut(new PrintStream(System.out, true, "Cp852")); 

System.out.println("ex1...."+ex1); 

...它的工作! - 在cmd窗口中顯示波蘭語字母。

Powodzenia !!!