当前位置: 代码迷 >> Java相关 >> Unicode码转汉语
  详细解决方案

Unicode码转汉语

热度:5375   发布时间:2013-02-25 21:44:32.0
Unicode码转中文
http://javawind.net/tools/native2ascii.jsp?action=transform这个在线的转码工具,有谁知道将Unicode码转成中文的后台算法是怎样实现的呀?怎样才能用Java实现将像 跳舞鞋红色亲子鞋215BRAND:足下有福 这种的转成 跳舞鞋红色亲子鞋215BRAND:足下有福 这种呀?、
求各位大牛指点呀
在网上看了半天都没看到个所以然~~

------解决方案--------------------------------------------------------
用这个试试看吧:
Java code
    public static String UnicodeToString(String str) {        Pattern pattern = null;        if (str.startsWith("&#")) {            pattern = Pattern.compile("(?:&#(\\d{4,5});?)");        } else if (str.startsWith("\\u")) {            pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");        } else {            throw new RuntimeException("Unicode Not Support");        }        char ch;        String ret = "";        Matcher matcher = pattern.matcher(str);        while (matcher.find()) {            if (matcher.groupCount() > 1) {                ch = (char) Integer.parseInt(matcher.group(2), 16);            } else {                ch = (char) Integer.parseInt(matcher.group(1), 10);            }            ret += ch;        }        return ret;    }
------解决方案--------------------------------------------------------
测试成功,楼主结贴给分吧

Java code
    String str = "跳舞鞋红色亲子鞋215BRAND:足下有福";    Pattern pattern = Pattern.compile("(&#(\\p{XDigit}{5});)");            Matcher matcher = pattern.matcher(str);            char ch;            while (matcher.find()) {            ch = (char) Integer.parseInt(matcher.group(2));                 str = str.replace(matcher.group(1), ch + "");        }            System.out.println(str);        //输出结果为:跳舞鞋红色亲子鞋215BRAND:足下有福
------解决方案--------------------------------------------------------
ldh911 大神始终快我一些啊

另外unicode 是把字符编译为16进制的 类似

楼主要处理的字符串其实不是普通的unicode编码 而是&# + ascii +";" 的html实体符号

中文“足” 的unicode为 “\u8db3” 而楼主的是 “足”

也就是16进制和10进制的区别
------解决方案--------------------------------------------------------
足 这种是html entity中的decimal character reference

也可以利用现成的jakarta commons lang包
比如commons-lang-2.6.jar

Java code
import org.apache.commons.lang.StringEscapeUtils;public class Test {    public static void main(String[] args) {        System.out.println(StringEscapeUtils.unescapeHtml("足"));        System.out.println(StringEscapeUtils.unescapeHtml(""));    }}
------解决方案--------------------------------------------------------
JScript code
alert(String.fromCharCode(36275,19979,26377,31119));
  相关解决方案