无法显示特殊字符

时间:2011-10-25 05:32:14

标签: java

我无法在屏幕上显示特殊字符(波兰字符)。我有一个要求,我从数据库中获取具有一些特殊字符的数据。我以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;

4 个答案:

答案 0 :(得分:3)

不要重新发明轮子!使用escapeXml库中StringEscapeUtils类的Apache Commons Lang方法,这就是这个简单的解决方案:

StringEscapeUtils.escapeXml(input);

答案 1 :(得分:2)

将页面的内容类型设置为UTF-8。

还要确保将响应标头设置为UTF-8。请参阅 - http://www.w3.org/International/O-HTTP-charset.en.php

答案 2 :(得分:0)

我不是肯定确定您要问的内容(是否要将该字符存储为xml,将其打印到控制台等)但是要使用unicode作为unicode代码点的前缀使用\ uXXXX,例如

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

将是角色ö。

请注意,这已取消enter link description here

答案 3 :(得分: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 !!!