`
jacobcookie
  • 浏览: 94847 次
社区版块
存档分类
最新评论

java--字符编码简介

阅读更多


基础知识
   
字节和字符
      字节(byte):一个八位的存储单元,取值范围一定是0~255;
      字符(character):就是一个语言上的符号,"中"字就是一个字符。
                 字符所占的大小由其编码方式解决,比如"中"在UTF-8中占3个字节(0xE4A8AD),而在GBK中,则占两个字节(0xD6D0)。
   
字符集和编码
      字符集:字符的集合,像Unicode字符集,目标就是收纳了这个世界上所有语言的文字、符号等;
    
      字符编码:注意,字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多个字节表示等问题,
                             则是由编码来决定的。像Unicode字符集的编码方式有很多,
                             诸如UTF-8、UFT-16、UTF-32等。字符集和字符编码是分开的概念,
                             但有时候称呼上会有些模糊,我们经常笼统地称这些Unicode字符集的编码为Unicode编码。
   
       内码:操作系统内部的字符编码。像早期的DOS采用的是ASCII,而现在的操作系统大把采用Unicode编码。
   
编码简史
   
        先了解一下编码的历史,才能知道为什么要编码。
        计算机对多语言的支持,大致为分以下三个阶段:
        阶段一:ASCII时代。计算机是DOS时代的计算内码是ASCII码,ASCII的表示范围就是0到127那几个符号,
                     这意味着,DOS时代的计算机只能显示英文,而无法支持其他语言。
                     由于英文系国家开创了并继续主导了计算机的世界,他们自然而然地认为全世界的文字用8个字节表示足矣。
         阶段二:ANSI时代。由于上述原因,像我们这些非英文系的国家的为了显示自家的文字,
                      不得不一开始就得面对字符编码的问题,不同国家不同地区都创建了自己的编码标准。
                      像中国大陆是GB2312及后来的GBK,台湾是BIG5,日本是JIS。
           ASCII字符集,以及这些由此派生并兼容的字符集称为ANSI字符集。
          阶段三:Unicode时代。为了和谐而出现,相较于以上两个阶段,这个时代称为国际化时代,
                        适应了跨平台、跨语言之间交换信息的需求。

package edu.fjut.charset;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

/*在计算机世界里,任何的文字都是以指定的编码方式存在的,在JAVA程序开发中,
 *最常见的编码有一下几种:ISO8859-1、GBK/GB2312、Unicode、UTF
 *ISO8859-1:此编码属于单字节编码,最多只能表示0-255的字符范围,主要用于英文
 *GBK/GB2312:中文的国标编码、专门用来表示汉字,是双字节编码.GB2312只能表示简体
 *unicode:java中就是使用此编码方式,也是最标准的一种编码,是使用16进制表示的编码.
 *        但此编码不兼容ISO8859-1编码
 *UTF:由于Unicode不支持ISO8859-1编码,而且容易占用更多的空间,而且对于英文字母也
 *    需要使用两个字节编码,这样使用Unicode不便于传输和存储,因此产生了UTF编码,
 *    UTF编码兼容了ISO8859-1编码,可以用来表示所有的语言字符.
 *    UTF是 Unicode Translation Format,即把Unicode转做某种格式的意思。 
 */
public class CharsetDemo {
     
	//乱码产生的根本原因是:字符编码不统一造成的
	public static void main(String[] args) throws Exception{
		
		//因为现在的本机环境是中文环境,所以是使用GBK编码
		System.out.println("系统默认编码:"+System.getProperty("file.encoding"));//GBK
		
		File file=new File("d:"+File.separator+"javase"+File.separator+"code.txt");
		
		OutputStream out=new FileOutputStream(file);//实例化输出流
		
		byte []b="中国,你好".getBytes("ISO8859-1");//转码操作,可以指定要的字符编码
		
		out.write(b);//保存,打开文件后,凡是中文的全部变成?????,因为编码不一致
		             //改成支持中文的编码就行了
		out.close();//关闭
		
	}

}
 
0
2
分享到:
评论

相关推荐

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

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

    java字符集编码问题

    ### Java字符集编码问题详解 #### 一、引言 在Java编程中,字符集编码问题是一个常见且重要的议题。由于不同的系统、平台以及网络环境中可能存在多种字符编码格式,这导致了在处理文本数据时可能会遇到编码不一致...

    MySQL-connector-java-8.0.28

    - 对Unicode字符集的支持更加完善,包括UTF-8和其他多字节编码。 在实际开发中,为了简化数据库连接管理,通常会使用像Apache DBCP、C3P0 或 HikariCP 这样的连接池库,它们可以帮助管理和复用数据库连接,进一步...

    java-utf8编码统一filter

    java-utf8编码统一filter,使用过滤器统一更改字符集为utf8

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

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

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

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

    java字符串的各种编码转换

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

    JAVA 转换字符编码工具

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

    mysql数据库驱动:mysql-connector-java-6.0.5.jar

    8. **配置参数**: 驱动支持多种配置参数,如连接超时、重试次数、字符编码等,这些参数可以通过URL查询字符串或`Properties`对象传递给`getConnection()`方法。 9. **安全特性**: 支持使用SSL/TLS加密连接,保护...

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

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

    java-json.jar.zip

    JSON库在Java中通常是用来解析和生成JSON字符串的,而这个`java-json.jar`则提供了额外的功能,即XML到JSON以及JSON到XML的转换。这种转换在处理来自不同系统的数据时非常有用,尤其是当一个系统使用JSON,而另一个...

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

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

    JAVA_字符编码

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

    java字符编码监听器

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

    将字符串从常用编码转为utf-8编码(java)

    Java字符串编码查询及转换,可将常用的一些编码格式转换成utf-8

    乱码 编码方式解决 gbk ISO8859-1 utf8 编码

    在计算机科学与信息技术领域中,字符编码是一个至关重要的概念,它直接关系到文本数据的正确存储、传输与显示。本文将针对标题中的几种常见编码格式(GBK、ISO 8859-1、UTF-8)以及如何解决由这些编码方式引发的乱码...

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

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

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

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

    java-Base64编码

    Java中的Base64编码是一种将二进制数据转化为可打印字符的编码方式,常用于在网络上传输或存储非ASCII字符的数据。Base64编码的基本原理是将每3个字节(24位)的数据转化为4个6位的字符,多余的位数通过在前面补0来...

    Java字符集编码简记

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

Global site tag (gtag.js) - Google Analytics