2011-10-25 108 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 !!!