`
hongjn
  • 浏览: 57035 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

Java中的字符编码

 
阅读更多
import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class CodeDemo {
    public static void main(String[] args) {
        String s = "简体中文";

        System.out.println(Arrays.toString(s.getBytes())); // 通过当前java文件编码格式获得字节数组(当前为GBK)
        try {
            /**
             * 按照UTF-8格式,将会输出[-25, -82, -128, -28, -67, -109, -28, -72, -83, -26, -106, -121]
             * 常用汉字在UTF-8中表示为三个字节,例如:
             * -25, -82, -128 三个十进制数转换为二进制:11100111 10101110 10000000
             * 根据UTF-8的转换方式:
             * (请参考:https://zh.wikipedia.org/wiki/UTF-8#UTF-8.E7.9A.84.E7.B7.A8.E7.A2.BC.E6.96.B9.E5.BC.8F)
             * 取的每个字节中有用的部分:第一个字节的0111,第二个字节的101110,第三个字节的000000
             * 得到:0111101110000000,再转换成十进制,得到他的unicode编码为:31616
             * 也就是说“简”在unicode中的编码为31616。
             */
            System.out.println(Arrays.toString(s.getBytes("UTF-8"))); // UTF-8编码格式
            /**
             * UTF-16编码,输出结果[-2, -1, 123, -128, 79, 83, 78, 45, 101, -121]
             * 这其中的前两位-2, -1 称之为:BOM(Byte Order Mark的简称)
             * (请参考:https://zh.wikipedia.org/wiki/UTF-16#UTF-16.E7.9A.84.E7.B7.A8.E7.A2.BC.E6.A8.A1.E5.BC.8F)
             * -2转换成十六进制就是FE,-1对应FF,这里的FEFF表明这里的UTF-16其实是UTF-16大尾序,简称UTF-16BE(Big Endian简称)
             * 假设把UTF-16换成UTF-16LE那么得到的结果将是:[-1, -2, ...],而如果换成UTF-16BE则和UTF-16一致,说明JDK默认指定了
             * BOM,而且是BE。
             */
            System.out.println(Arrays.toString(s.getBytes("UTF-16"))); // UTF-16
            /**
             * GBK较简单。
             * ASCII范围内的字符使用单个字节表示,共128个字符;
             * 余下字符均使用两个字节编码一个字符。
             * 输出:[-68, -14, -52, -27, -42, -48, -50, -60]
             */
            System.out.println(Arrays.toString(s.getBytes("GBK"))); // GBK
            /**
             * UTF-32是没有效率的,因为它为每个字符固定的使用四个字节编码。
             * 正如输出结果所看到的。
             * 输出:[0, 0, 123, -128, 0, 0, 79, 83, 0, 0, 78, 45, 0, 0, 101, -121]
             */
            System.out.println(Arrays.toString(s.getBytes("UTF-32"))); // UTF-32
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
 

 

分享到:
评论

相关推荐

    JAVA中文字符编码问题详解.doc

    在 JAVA 中,中文字符编码问题一直是让人头疼的问题,特别是在 WEB 应用中。网上的分析文章和解决方案都很多,但总是针对某些特定情况的。本文将详细解释 JAVA 中文字符编码问题的根源,并提供解决方案。 一、JAVA ...

    Java中文字符编码探究.pdf

    了解不同的字符编码方式和Java中的字符编码机制,可以帮助开发者更好地解决乱码问题,并提高开发效率。 在Web开发中,中文字符编码探究也非常重要。使用正确的字符编码方式,可以确保中文字符的正确显示和传输。...

    JAVA 转换字符编码工具

    通过分析`FileViewer.java`和`ReadFile02.java`的源码,我们可以深入理解Java中字符编码处理的原理和最佳实践,包括如何正确指定编码、如何处理乱码,以及如何提高读写性能。这样的工具对于进行多语言项目开发或者...

    java字符编码错误整理大全

    ### Java字符编码错误整理大全 #### 一、概述 在Java开发过程中,字符编码问题是非常常见且容易引发一系列乱码问题的重要因素。本篇将详细梳理Java中的字符编码相关知识点,帮助开发者解决实际工作中遇到的各种...

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

    ### Java中的字符集编码入门(五):Java代码中的字符编码转换Part1 #### 核心知识点概述: 本文档深入探讨了Java编程语言中字符集编码的基础知识,并着重讲解了字符编码转换的基本原理及其在Java代码中的应用。...

    java_字符编码 Javajava_字符编码问题

    通过以上的介绍,我们可以了解到 Java 中字符串和字符编码的处理是非常重要的,特别是在跨平台和多语言环境中。正确的字符编码管理不仅可以避免乱码问题,还能提高程序的健壮性和可维护性。希望本文能帮助开发者们更...

    JAVA里字符编码的探索与理解.txt

    ### JAVA里字符编码的探索与理解 #### 一、引言 在计算机科学领域,字符编码是将人类可读的文本转换为计算机可以处理的数据格式的过程。JAVA作为一种广泛使用的编程语言,尤其注重国际化和多语言支持,因此采用了...

    JAVA_字符编码

    在Java编程语言中,字符编码是一个至关重要的概念,它涉及到如何表示、存储和处理文本数据。字符编码系统如ASCII、ISO-8859-1、Unicode(包括UTF-8、UTF-16等)被广泛使用。本教程将深入探讨Java中的字符编码,以及...

    Java中字符编码格式详解

    Java中的字符编码格式是编程过程中一个非常重要的概念,因为它直接影响到字符数据的正确表示和处理。本文将深入探讨Java中字符编码的相关问题,包括字符的存储格式、编码转换以及Java虚拟机(JVM)对字符的处理方式...

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

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

    Java字符集编码简记

    本文将围绕“Java字符集编码简记”这一主题,深入探讨相关知识点,并结合标签“源码”和“工具”,探讨在实际开发中如何运用和处理字符编码问题。 首先,我们需要理解字符集的概念。字符集是一系列符号的集合,例如...

    java字符串的各种编码转换

    下面将介绍几种常见的字符编码格式以及如何在Java中实现它们之间的转换。 #### 1. US-ASCII (美国标准信息交换码) - **定义**:US-ASCII是一种7位的字符编码标准,用于表示英文字符和其他控制字符。 - **特点**: ...

    java文件字符编码检测和转换

    字符编码检测和转换 附件中:FileEncodeDetector.java 此文件可以检测指定文件的编码格式 public static String getFileEncode(File file) {...} 附件中:FileCharsetConverter.java 此文件可以实现两个编码的相互...

    java文件字符编码集判断依赖.zip

    通用的文件字符编码集判断需要借助第三方包cpdetector.jar 使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段...

    java使用URLDecoder和URLEncoder对中文字符进行编码和解码

    这两个类位于`java.net`包下,可以帮助开发者进行字符串编码和解码,确保数据在网络传输过程中的正确性。 `URLEncoder`类提供了`encode`静态方法,用于将普通字符串编码成`application/x-www-form-urlencoded` MIME...

    java字符串编码转换

    在Java中,字符串的处理是非常常见的操作之一,而字符编码是确保数据正确显示的关键因素。本篇文章将重点介绍Java中字符串编码的转换方法及其在Web环境中的应用。 #### 二、Java中的字符串与字符编码 在Java中,`...

    java字符编码监听器

    Java字符编码监听器是Java Web开发中的一个重要概念,主要用于处理HTTP请求和响应中的字符编码问题。在Java Servlet规范中,提供了`SetCharacterEncodingFilter`这样的过滤器,用于确保请求参数和响应内容的正确编码...

    Java字符集和编码

    UTF-8(Unicode Transformation Format-8)是一种可变长度的字符编码格式,主要用于在网络中快速传输Unicode字符。UTF-8的基本原理是根据Unicode字符的范围,将其映射成不同长度的编码,具体规则如下: - 每个英文...

Global site tag (gtag.js) - Google Analytics