posts - 262,  comments - 221,  trackbacks - 0
package example.encoding;

/**
 * The Class ChineseValidator.
 
*/

public class CharacterValueConveter {

    
/**
     * The main method.
     * 
     * 
@param args the arguments
     
*/

    
public static void main(String args[]) {
        CharacterValueConveter conveter 
= new CharacterValueConveter();
        conveter.testConvertion(
"中文");
    }


    
/**
     * Test convertion.
     * 
     * 
@param content the content
     
*/

    
public void testConvertion(String content) {
        
byte[] bytes = content.getBytes();
        
        System.out.println(
"Original String : " + content);
        System.out.println();
        
        
// Get bytes array
        System.out.println("Convert string to bytes array : ");
        
for (int i = 0; i < bytes.length; i++{
            System.out.println(
" byte[" + i + "]=" + bytes[i]);
        }

        System.out.println();

        
// Get each character and unicode
        System.out.println("Start to convert by character: " + "\n");
        
for (int j = 0; j < content.length(); j++{
            
char c = content.charAt(j);
            printAllValue(c);
        }

    }


    
/**
     * Prints the all value.
     * 
     * 
@param c the c
     
*/

    
public void printAllValue(char c) {

        
byte b = (byte) c;
        
int i = (int) c;
        
short s = (short) c;
        String binaryString 
= Integer.toBinaryString(i);
        String hexString 
= Integer.toHexString(i);

        StringBuffer output 
= new StringBuffer();
        
// Base value
        output.append("Character : ").append(c).append("\n");
        output.append(
" byte value : ").append(b).append("\n");
        output.append(
" int value : ").append(i).append("\n");
        output.append(
" short value : ").append(s).append("\n");
        
        
// Hex value and binary value
        output.append(" hex value :").append(hexString).append("\n");
        output.append(
" binary value : ").append(binaryString).append("\n");
        
        
// Unicode value in java file & web page with decimal encoding
        output.append(" unicode value (Base 10): ");
        output.append(
"\\u").append(i).append(";").append("\n");
        
        output.append(
" unicode value (Base 10 in web page): ");
        output.append(
"&#").append(i).append(";").append("\n");
        
        
// Unicode value in java file & web page with hexadecimal encoding
        output.append(" unicode value (Base 16): ");
        output.append(
"\\u").append(hexString).append(";").append("\n");
        
        output.append(
" unicode value (Base 16 in web page): ");
        output.append(
"&#").append(hexString).append(";").append("\n");

        System.out.println(output.toString());
    }


}

最终的测试结果如下:
Original String : 中文

Convert string to bytes array : 
 byte
[0]=-42
 byte
[1]=-48
 byte
[2]=-50
 byte
[3]=-60

Start to convert by character: 

Character : 中
 byte value : 
45
 int value : 
20013
 short value : 
20013
 hex value :4e2d
 binary value : 
100111000101101
 unicode value (Base 
10): \u20013;
 unicode value (Base 10 in web page): &#20013;
 unicode value (Base 16): \u4e2d;
 unicode value (Base 16 in web page): e2d;

Character : 文
 byte value : -
121
 int value : 
25991
 short value : 
25991
 hex value :
6587
 binary value : 
110010110000111
 unicode value (Base 
10): \u25991;
 unicode value (Base 10 in web page): &#25991;
 unicode value (Base 16): \u6587;
 unicode value (Base 16 in web page): &#6587;

可以看到在Java中,字符的unicode有两种表示显示:一种是10进制形式,一种是16进制形式。它们可以分别通过:int i = (int)(string.charAt(i))和Integer.toHexString(i);获得。而且在java文件和Web页面,同一个unicode的表示形式是不同。web页面需要用&#进行转义,在java文件中则使用\u进行转义。


-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2010-02-23 16:48 Paul Lin 阅读(1962) 评论(2)  编辑  收藏 所属分类: J2SE


FeedBack:
# re: 【Java基础专题】编码与乱码(06)---字符的各种值转换
2010-02-24 05:23 | tbw
学习了。。。。  回复  更多评论
  
# re: 【Java基础专题】编码与乱码(06)---字符的各种值转换
2010-02-24 14:22 | 咖啡妆
期望更深入的讲解  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2010年2月>
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213

常用链接

留言簿(19)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜