`
孤独勇者
  • 浏览: 7030 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java字符编码总结

    博客分类:
  • java
阅读更多

文章的内容是我通过看其他文章后摘抄和总结的,如有雷同,一定是抄的。

1 编码简介
1.1 ASCII/ISO-8859-1/Latin_1
单字节编码,可以表示256个不同的字符(英文字符、标点符号等)。


1.2 GB2312/GBK
双字节编码(不定长,英文时只用一个字节),兼容ISO-8859-1编码,即当其为ISO-8859-1时,只需用一个字节来表示,并且其值完全一样。GB2312只能表示简体字,GBK可以同时表示繁体字和简体字,并且兼容GB2312。


1.3 Unicode
定长双字节编码,不兼容任何编码,但可通过转换,表示任何编码。Java内部使用Unicode来进行操作。不过Unicode容易占用更多的空间,因为对于英文字母,Unicode也需要两个字节来表示。


1.4 UTF(UCS Transformation Format)
不定长编码,每一个字符的长度从1-6个字节不等,一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。其实UTF就是Unicode编码的传输和存储的格式。

2 Java对字符的处理


2.1 getBytes(charset)
将字符串所表示的字符按照charset编码,并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如"中文",存储为"4e2d 6587",如果charset为"gbk",则被编码为"d6d0 cec4",然后返回字节"d6 d0 ce c4"。如果charset为"utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1",则由于无法编码,最后返回 "3f 3f"(两个问号)。(应先考虑字符串所表示的字符编码,然后确定需转换的编码与现在字符串的编码是否兼容


2.2 new String(charset)
将字节数组按照charset编码进行组合识别,最后转换为unicode存储。就是按照不同的编码,取不同的字节数,然后转换成unicode

3 Java中各类型操作的字符处理

 

3.1 各类型处理

 

Java字符编码处理

 

3.2 文件读写
外部数据如文件经过读写转换两个步骤,转为jvm所使用字符。
1. InputStream/OutputStream用于读写原始外部数据,Reader/Writer执行读写和转换两个步骤,处理汉字不合适,应该首选使用Reader/Writer。
2. FileReader/FileWriter使用JVM当前编码读写文件.如果有其它编码格式,使用InputStreamReader/OutputStreamWriter
3. PrintStream有点特殊,它自动使用jvm缺省编码进行转换。


3.3 读取.properties文件
.propeties文件由Properties类以iso8859-1编码读取,因此不能在其中直接写汉字。
1. 使用JDK 的native2ascii工具转换汉字为\uXXXX格式。命令行:native2ascii –encoding GBK inputfile outputfile
2. 对读入的字符串进行转换:byte[] b = str.getBytest(“ISO-8859-1”); str = new String(b,”GBK”);

3.4 读取XML文件
XML文件读写同于文件读写,但应注意确保XML头中声明如<? xml version=”1.0” encoding=”gb2312”?>与文件编码保持一致。

3.5 WEB/Servlet/JSP
1. 对于JSP,确定头部加上 <%@ page contentType="text/html;charset=gbk"%>这样的标签。
2. 对于Servlet,确定 设置setContentType (“text/html; charset=gbk”),以上两条用于使得输出汉字没有问题。
3. 为输出HTML head中加一个 <meta http-equiv="Content-Type" content="text/html; charset=gbk"> ,让浏览器正确确定HTML编码。
4. 为Web应用加一个Filter,确保每个Request明确调用setCharacterEncoding方法,让输入汉字能够正确解析。

 

分享到:
评论

相关推荐

    java字符串的各种编码转换

    ### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现...

    java字符编码监听器

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

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

    ### Java 字符编码详解 #### 一、Java 字符编码基础概念 在深入探讨 Java 字符编码的问题之前,我们先来了解一下字符编码的基本概念。字符编码是计算机内部表示字符的一种方式,它涉及到如何将人类可读的文字转换...

    Java字符集编码简记

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

    JAVA字符编码问题总结

     上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。  ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),...

    Java字符集和编码

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

    JAVA_字符编码

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

    JAVA 转换字符编码工具

    本篇将围绕"JAVA 转换字符编码工具"这个主题,深入探讨字符编码的概念、Java中的字符编码API以及`ReadFile.java`这个可能的源码文件如何处理字符编码。 首先,我们需要理解字符编码的基本概念。常见的字符编码有...

    java字符编码问题

    ### Java字符编码问题详解 #### 一、引言 在Java开发过程中,字符编码问题是一个常见且容易引发各种隐藏问题的领域。不正确的字符编码处理可能导致数据丢失、乱码甚至是程序异常。本文将深入探讨Java中的字符编码...

    java字符串编码转换

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

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

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

    java字符编码错误整理大全

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

    Java字符编码及获取文件编码

    在Java编程语言中,字符编码是一个至关重要的概念,它涉及到数据的存储、处理和传输。字符编码决定了如何将字符(如字母、数字、符号)转换为数字表示,以便计算机能够理解并操作它们。本篇文章将深入探讨Java中的...

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

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

    JAVA字符编码系列三[借鉴].pdf

    Java字符编码系列三主要探讨了Java应用中遇到的编码问题,包括编码基础知识、Java与系统软件、URL、工具软件等方面的处理。文章通过“中文”二字举例,解释了不同编码方式如GB2312、Unicode、UTF-8的表示方法。 1. ...

    java字符编码转换详细过程

    ### Java字符编码转换详细过程 #### 一、Java程序的生命周期与字符编码处理流程 Java程序的生命周期可以概括为三个主要阶段:编写源代码、编译源代码以及运行编译后的类文件。在这个过程中,涉及到多种字符编码的...

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

    ### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, UTF-8 编码及相互转换 在Java开发过程中,字符编码是处理文本数据的基础,不同的编码方式会影响数据的存储、传输以及显示。本文将详细介绍几种常见的字符编码...

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

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

    Java字符编码简介_动力节点Java学院整理

    Java字符编码是编程中至关重要的一个概念,尤其是在处理多语言数据时。本文主要探讨了Java中与字符编码相关的基础知识,包括ISO8859-1、GB2312、GBK、Unicode以及UTF编码。 首先,ISO8859-1是一种早期的单字节编码...

Global site tag (gtag.js) - Google Analytics