在许多场合中,我们会使用到Unicode码,但是unicode编码的形式我们却没办法直观知道是哪个字符,这样我们就需要对讲Unicode码转换成我们认识的汉字字符。

什么是Unicode?

Unicode(统一码、万国码、单一码、标准万国码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简化地方式来呈现和处理文字。

–Wikipedia

Unicode字符用什么表示?

Unicode通常使用U+XXXX,XXXX四位十六进制数,例如U+4F60。但是在Unicode 3.0后,Unicode使用“U-”然后紧接着八位十六进制数,在Unicode 3.0之前,使用的”U+”后面跟的四位十六位进制数。

在Java对Unicode的实现就不是用这样表示的。Java的形式是”\uXXXX”,例如”\u4F60” 是汉字“你”。

有时候,我们使用在文件中使用汉字字符,但是当文件的编码发生改变的时候,那么就会出现乱码了。如果我们使用unicode的转移形式(”\uXXXX”)去表示中文,那么我们改变文件的编码的时候,就不会出现乱码了,因为我们使用的是ASCII字面值去存储文本的。

但是这样观看Unicode码不够直观,我们不知道具体是什么汉字,所以我们需要通过转换,这样我们就知道具体对应的是什么汉字了。

将Unicode码转化为汉字字符

public static String UnicodetoString(String s){
    String ss[] =  s.split("\\\\u");
    StringBuilder sb=new StringBuilder(ss.length-1);
    for (int i = 1; i < ss.length; i++) {
        sb.append((char)Integer.parseInt(ss[i], 16));
    }
    return sb.toString();
}

获取汉字字符的Unicode码

public static String StirngtoUnicode(String s){
    StringBuilder sb=new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        sb.append(String.format("\\u%04x", (int)s.charAt(i)));
    }
    return sb.toString();
}

 

因为String.format()方法是用return new Formatter().format(format, args).toString(); 所以先创建一个Formatter对象,减少对象的使用。

public static String StringtoUnicode(String s){

    Formatter formatter = new Formatter();
    for (int i = 0; i < s.length(); i++) {
        formatter.format("\\u%04x", (int)s.charAt(i));
    }
    return formatter.toString();
}

http://docs.oracle.com/javase/tutorial/i18n/text/string.html

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: unicode与字符相互转换 – https://www.chenyudong.com/archives/unicode-and-characters-converted-into-each-other.html