基础知识
字节和字符
字节(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();//关闭
}
}
分享到:
相关推荐
### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, UTF-8 编码及相互转换 在Java开发过程中,字符编码是处理文本数据的基础,不同的编码方式会影响数据的存储、传输以及显示。本文将详细介绍几种常见的字符编码...
### Java字符集编码问题详解 #### 一、引言 在Java编程中,字符集编码问题是一个常见且重要的议题。由于不同的系统、平台以及网络环境中可能存在多种字符编码格式,这导致了在处理文本数据时可能会遇到编码不一致...
java-utf8编码统一filter,使用过滤器统一更改字符集为utf8
Java中的字符编码转换是编程实践中一个至关重要的概念,尤其是在处理多语言环境和跨平台交互时。Java通过统一采用UTF-16编码格式在JVM内部处理字符,简化了字符操作的复杂性。UTF-16是一种变长的Unicode编码,它可以...
### Java 字符编码详解 #### 一、Java 字符编码基础概念 在深入探讨 Java 字符编码的问题之前,我们先来了解一下字符编码的基本概念。字符编码是计算机内部表示字符的一种方式,它涉及到如何将人类可读的文字转换...
### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现...
本篇将围绕"JAVA 转换字符编码工具"这个主题,深入探讨字符编码的概念、Java中的字符编码API以及`ReadFile.java`这个可能的源码文件如何处理字符编码。 首先,我们需要理解字符编码的基本概念。常见的字符编码有...
8. **配置参数**: 驱动支持多种配置参数,如连接超时、重试次数、字符编码等,这些参数可以通过URL查询字符串或`Properties`对象传递给`getConnection()`方法。 9. **安全特性**: 支持使用SSL/TLS加密连接,保护...
### Java中的字符集编码入门(五):Java代码中的字符编码转换Part1 #### 核心知识点概述: 本文档深入探讨了Java编程语言中字符集编码的基础知识,并着重讲解了字符编码转换的基本原理及其在Java代码中的应用。...
JSON库在Java中通常是用来解析和生成JSON字符串的,而这个`java-json.jar`则提供了额外的功能,即XML到JSON以及JSON到XML的转换。这种转换在处理来自不同系统的数据时非常有用,尤其是当一个系统使用JSON,而另一个...
通用的文件字符编码集判断需要借助第三方包cpdetector.jar 使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段...
在Java编程语言中,字符编码是一个至关重要的概念,它涉及到如何表示、存储和处理文本数据。字符编码系统如ASCII、ISO-8859-1、Unicode(包括UTF-8、UTF-16等)被广泛使用。本教程将深入探讨Java中的字符编码,以及...
Java字符编码监听器是Java Web开发中的一个重要概念,主要用于处理HTTP请求和响应中的字符编码问题。在Java Servlet规范中,提供了`SetCharacterEncodingFilter`这样的过滤器,用于确保请求参数和响应内容的正确编码...
Java字符串编码查询及转换,可将常用的一些编码格式转换成utf-8
在计算机科学与信息技术领域中,字符编码是一个至关重要的概念,它直接关系到文本数据的正确存储、传输与显示。本文将针对标题中的几种常见编码格式(GBK、ISO 8859-1、UTF-8)以及如何解决由这些编码方式引发的乱码...
字符编码检测和转换 附件中:FileEncodeDetector.java 此文件可以检测指定文件的编码格式 public static String getFileEncode(File file) {...} 附件中:FileCharsetConverter.java 此文件可以实现两个编码的相互...
### JAVA字符编码详解:Unicode, ISO-8859-1, GBK, UTF-8 及其相互转换 #### 一、引言 在Java编程中,字符编码的管理和转换是一项基本而又重要的任务。不同的编码标准适用于不同的场景,而理解和掌握这些编码之间...
Java中的Base64编码是一种将二进制数据转化为可打印字符的编码方式,常用于在网络上传输或存储非ASCII字符的数据。Base64编码的基本原理是将每3个字节(24位)的数据转化为4个6位的字符,多余的位数通过在前面补0来...
本文将围绕“Java字符集编码简记”这一主题,深入探讨相关知识点,并结合标签“源码”和“工具”,探讨在实际开发中如何运用和处理字符编码问题。 首先,我们需要理解字符集的概念。字符集是一系列符号的集合,例如...
Unicode是一种旨在覆盖世界上所有书写系统的字符编码标准,它采用固定的编码长度,一般为2字节(UTF-16)或4字节(UTF-32)。Unicode编码解决了多语言环境中字符编码不统一的问题,使得各种语言的字符可以在同一环境...