繁体   English   中英

无法显示特殊字符

[英]Not able to display special characters

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

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

StringEscapeUtils.escapeXml(input);

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

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

当您想在控制台窗口中编写波兰字符时使用(重定向System.out !!!)

请看: UTF-8 CJK字符不在Java中显示

我测试过:

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

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

......它的工作原理!!!! - 在cmd窗口中显示抛光字母。

Powodzenia!

我不是你问什么(是否要保存字符为XML,打印到控制台等),但这样做的unicode你前缀为\\ uXXXX Unicode代码点积极肯定,因此,例如

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

将是角色ö。

请注意, 此处已取消输入链接描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM