/*
* 最早的编码是ISO-8859-1,和ASCII编码相似,属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。
* 比如,字母'a'的编码为0x61=97。
*
* 由于ISO-8859-1是单字节编码,和计算机最基础的表示单位一致,所以很多时候仍旧使用ISO-8859-1编码来表示,
* 而且在很多协议上,默认使用该编码。比如,虽然"中文"两个字不存在ISO-8859-1编码,以GB2312编码为例,应该
* 是"d6d0 cec4"两个字符,使用ISO-8859-1编码的时候则将它拆开为4个字节来表示:"d6 d0 ce c4"(事实
* 上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节"e4 b8 ad e6 96 87"。
*
* GB2312/GBK是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和ISO-8859-1一致(兼容ISO-8859
* -1编码)。其中GBK编码能够用来同时表示繁体字和简体字,而GB2312只能表示简体字,GBK是兼容GB2312编码的。
*
* Unicode是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。
* 所以它不兼容ISO-8859-1编码,也不兼容任何编码。不过,相对于ISO-8859-1编码来说,Uniocode编码只是在
* 前面增加了一个0字节,比如字母'a'为"00 61"。
*
* 由于Unicode编码不兼容ISO-8859-1编码,而且容易占用更多的空间:因为对于英文字母,Unicode也需要两个
* 字节来表示。所以Unicode不便于传输和存储。因此而产生了UTF编码,UTF编码兼容ISO-8859-1编码,同时也可以
* 用来表示所有语言的字符,但UTF编码是不定长编码,每一个字符的长度从1-6个字节不等。另外,UTF编码自带简单的校验
* 功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。
*
*
*/
package com.test;
import java.io.UnsupportedEncodingException;
public class TestCharset {
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
String str = "abcdef中文";
String strISO = null;
String str2 = null;
String charsetDef = "UTF-8";// UTF-8一般用3个字节表示一个汉字
// String charsetDef = "GBK"; // GBK用2个字节表示一个汉字
byte[] buf = null;
byte[] bufISO = null;
String encoding = System.getProperty("file.encoding");// 取得默认编码
System.out.println("file.encoding:" + encoding);// file.encoding:GBK
System.out.println();
// 根据默认编码转换
buf = str.getBytes();// 用默认编码解码
strISO = new String(buf, "ISO-8859-1");// 用新的编码生成字符串
System.out.println("strISO:" + strISO); // abcdef????
bufISO = strISO.getBytes("ISO-8859-1"); // 用新的编码解码
str2 = new String(bufISO, "GBK"); // 再回到默认编码
System.out.println("str2:" + str2); // abcdef中文
System.out.println();
// 根据指定编码转换
buf = str.getBytes(charsetDef);// 用指定编码解码
strISO = new String(buf, "ISO-8859-1");// 用新的编码生成字符串
System.out.println("strISO:" + strISO); // abcdef??????
bufISO = strISO.getBytes("ISO-8859-1"); // 用新的编码解码
str2 = new String(bufISO, charsetDef); // 再回到指定编码
System.out.println("str2:" + str2); // abcdef中文
System.out.println();
}
}
输出:
file.encoding:GBK
strISO:abcdef????
str2:abcdef中文
strISO:abcdef??????
str2:abcdef中文
注意:两个?号代表一个字节。
分享到:
相关推荐
Java中的字符集编码入门(五)Java代码中的字符编码转换Part1.pdf
java 写的字符编码转换工具(附带源码) java 写的字符编码转换工具(附带源码) java 写的字符编码转换工具(附带源码)
java字符串的各种编码转换. java字符串的各种编码转换
java字符串编码转换和web中的字符串转换
java程序文件字符编码转换器 JLabel labsuffix = new JLabel("指定文件的后缀"); JLabel labCharacter = new JLabel("选择转换方式"); JLabel labfiletext = new JLabel("正在处理"); JTextArea jTextArea = new...
Java实现的字符编码转换程序,基于Bean的封装实现,程序通过Client触发调用Bean方法,取得Home对象的引用,然后用EJB生成库Home生成EJB对象,调用EJB对象方法printHelloWorld(),EJB对象把调用委派给Bean,同时程序...
字符编码检测和转换 附件中:FileEncodeDetector.java 此文件可以检测指定文件的编码格式 public static String getFileEncode(File file) {...} 附件中:FileCharsetConverter.java 此文件可以实现两个编码的相互...
Java中的字符集编码入门(五)Java代码中的字符编码转换Part1.doc
Java中的字符集编码入门(五)Java代码中的字符编码转换Part1[参考].pdf
批量转换文件编码 超级批量编码转换 批量转换编码 编码批量转换工具 批量转换txt编码 linux 批量转换编码 编码格式批量转换 php 字符编码转换 字符编码转换 java 字符编码转换
Java字符编码转换过程说明,用这个可以用jdk里的程序完成字符编码转换
总结了java中常见的utf-8、gbk等进行字符串编码转换
Java字符串编码查询及转换,可将常用的一些编码格式转换成utf-8
也即,java程序在被编译前,我们的JAVA源程序文件是采用操作系统默认支持的file.encoding编码格式保存的, java源程序中含有中文信息字符和英文程序代码;要查看系统的file.encoding参数,可以用以下
JAVA二进制字节数组字符十六进制BCD编码转换
java 字符集编码转换,时间格式化,数字判断等,java文件
NULL 博文链接:https://sammyfun.iteye.com/blog/1662240
JAVA字符串操作类CTool.java字符转换类,此类中收集Java编程中WEB开发常用到的一些工具。为避免生成此类的实例,构造方法被申明为private类型的。封装的功能:字符串从GBK编码转换为Unicode编码、对字符串进行md5...
中文转换成NCR编码格式,在把一个富文本的字符串生成一个html文件,中文出现乱码,试了好多次终于发现用NCR编码可以解决。如利用陀
不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);