`

【Java基础专题】编码与乱码(06)---字符的各种值转换

 
阅读更多
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进行转义。

分享到:
评论

相关推荐

    JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    ### JAVA字符编码详解:Unicode, ISO-8859-1, GBK, UTF-8 及其相互转换 #### 一、引言 在Java编程中,字符编码的管理和转换是一项基本而又重要的任务。不同的编码标准适用于不同的场景,而理解和掌握这些编码之间...

    关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    在Java中,如果使用ISO-8859-1编码获取Unicode字符时,可能会出现乱码,因为一个Unicode字符可能无法准确地转换成一个ISO-8859-1字节。 #### 3. GBK GBK是中国大陆地区广泛使用的一种汉字编码标准,它是对GB2312...

    Java 所有字符串转UTF-8 万能工具类-GetEncode.java

    不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);

    java中文乱码问题详解--- java中文乱码问题详解

    #### 三、Java编码转换的详细过程 Java程序从开发到运行的过程中,涉及到多个环节的编码转换,主要包括: 1. **源文件编码**:Java源文件(`.java`)在保存时通常采用操作系统默认的编码格式。例如,在中文Windows...

    JAVA 转换字符编码工具

    字符编码决定了如何将字符转换为字节序列,以及如何从字节序列恢复字符。本篇将围绕"JAVA 转换字符编码工具"这个主题,深入探讨字符编码的概念、Java中的字符编码API以及`ReadFile.java`这个可能的源码文件如何处理...

    eclipse中class乱码GBK-UTF-8转换工具

    然而,当涉及到字符编码时,如GBK和UTF-8之间的转换,可能会遇到乱码问题。这篇博客文章“eclipse中class乱码GBK-UTF-8转换工具”正是为了解决这个问题。 GBK是GB2312的扩展,包含了更多的汉字和其他字符,主要在...

    java 编码 UTF-8、ISO-8859-1、GBK

    Java 编码问题一直是开发者们面临的一大挑战,尤其是在处理中文字符时。UTF-8、ISO-8859-1 和 GBK 是三种常见的字符编码格式,每种都有其特定的应用场景和优缺点。 首先,UTF-8 是一种广泛使用的多字节编码,能够...

    有关pdfbox-1.3.1中Identity-H编码为乱码的解决方法

    这个问题的根本原因在于PDFBox在解析和渲染使用Identity-H编码的PDF文档时,未能正确地将Unicode字符转换为PDF中的字形。这可能涉及到字体嵌入、编码设置、或者PDFBox库自身的编码处理逻辑。 为了解决这个问题,你...

    Java中的字符集编码入门(五)Java代码中的字符编码转换Part1.pdf

    Java中的字符编码转换是编程实践中一个至关重要的概念,尤其是在处理多语言环境和跨平台交互时。Java通过统一采用UTF-16编码格式在JVM内部处理字符,简化了字符操作的复杂性。UTF-16是一种变长的Unicode编码,它可以...

    字符编码过滤器 字符编码转换 post字符转换

    本文将深入探讨"字符编码过滤器"、"J2EE字符编码"、"字符编码转换"以及"POST字符转换"这些关键知识点,并结合提供的文件"encoding-filter.jar"和"使用方法.txt"来解释它们的应用。 首先,字符编码是计算机存储和...

    java读写csv文件,中文乱码问题

    - 解决Java处理CSV文件时的中文乱码问题,关键在于正确指定字符编码。 - 要注意文件的读取、写入以及处理过程中的编码一致性。 - 使用专门的CSV处理库能简化操作,并提供更好的兼容性。 - 对于复杂情况,了解并...

    关于java中的编码转换问题(解决乱码问题)

    编码是指将字符转换为字节序列的过程,不同的字符集有不同的编码方式。例如,ASCII编码用1个字节表示一个字符,而UTF-8编码则根据字符的不同,使用1到4个字节。 二、简单字符串的编码转换 在Java中,String类提供了...

    数据库编程之编码转换实例--乱码分析

    乱码通常发生在不同字符集之间转换时,例如从GBK编码转换到UTF-8编码,或者反之。当原始数据的编码与系统识别的编码不匹配时,就会出现无法正确显示的字符,也就是我们常说的乱码。 在数据库编程中,编码问题可能...

    关于GBK和Unicode字符集转换乱码问题

    4. **使用标准化的编码格式**:尽可能地使用如UTF-8这样的通用编码格式,它可以很好地支持各种语言字符,减少乱码的风险。 5. **编码转换工具的选择**:选择合适的工具进行编码转换也非常重要。例如,Java中的`...

    解决中文乱码问题-java

    当从不同的源(如网络请求、文件读取等)获取字符串时,必须明确知道其原始编码格式,并在必要时进行转换,以便与当前系统或程序所使用的编码格式相匹配。在Java中,常用的编码有`ISO-8859-1`(也称为`latin1`)、`...

    【IT十八掌徐培成】Java基础第09天-005.String-字符集编码.zip

    在Java基础教程中,徐培成老师的"Java基础第09天-005.String-字符集编码"主题深入探讨了这一主题,帮助初学者理解字符串(String)类与字符编码的关系。 首先,我们要知道什么是字符集。字符集是一系列用于表示文本的...

    java 编码,乱码,字符系列(1)

    本文将围绕“Java编码与乱码”这一主题展开,探讨字符编码系列的第一部分。 首先,我们需要理解什么是字符编码。字符编码是计算机用于表示文字、符号等字符的方式,它为每个字符分配了一个唯一的数字,使得计算机...

Global site tag (gtag.js) - Google Analytics