编码:字符串转成字符数组
解码:字节数组转成字符串
String类中的字段,charsetName:编码字符集
String -> byte[] Str.getBytes(charsetName)
byte[] -> String new String(byte[] b,charsetName)
我们用UTF-8将"你"编码后,返回的字节数值是-28, -67, -96,
十进制:-28 二进制是:11100100 十六进制:E4 对应无符号整数:228
-67 10111101 BD 189
-96 10100000 A0 160
"你"的UTF-8码是 E4 BD A0
"浣"的GBK 码是 E4 BD
最后的A0 解码后是"?",是不可识别的字符
所以如果我们将字符"你"使用UTF-8编码,用默认的GBK解码,打印的是字符"浣?"
[示例]:字符编码解码练习
import java.util.*;
class Demo
{
public static void main(String[] args) throws Exception
{
String str = "你";
byte[] b1 =str.getBytes("UTF-8"); //编码
String sopStr =Arrays.toString(b1);//返回指定数组内容的字符串表示形式
sop(sopStr); //[-28, -67, -96]
String s1 = new String(b1); //解码,使用平台的默认字符集解码指定的 byte 数组
sop("s1:"+s1); //"浣" , 由于默认是GBK解码,所以打印"浣"
String s2 = new String(b1,"UTF-8");
sop("s2:"+s2); //"你" ,UTF-8解码打印"你"
//如果我们将"你"解码错了,本来要使用UTF-8解码,误用"iso8859-1"解码了
//由于西欧字符集与中文系统不兼容,我们用"iso8859-1"解码出来的是乱码
String errStr = new String(b1,"iso8859-1");
sop("errStr:"+errStr); //"???", 解码错误,乱码
byte[] bErr = errStr.getBytes("iso8859-1"); //返炉重编
sop(new String(bErr,"UTF-8"));//"你",解码成功
//注意:这种方法不适合于相同的字符体系
//因为当用GBK解码UTF-8没找到字符时,它会到备用字符集中区找,返回的字符是走样的
//不是原来的"你"的值了,用getBytes方法重新编码只会得到乱码
}
public static void sop(Object obj) //打印
{
System.out.println(obj);
}
}
分享到:
相关推荐
Java学习笔记:JavaSe、Spring、JVM、MySQL、MyBatis...
Java字符串学习笔记,比较系统的讲解了Java的字符串知识
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
Java项目学习笔记: SSM实战项目——Java高并发秒杀API,详细流程+学习笔记
java学习笔记java学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记...
java学习笔记,java基础知识,只用于个人学习。
java学习笔记.doc java学习笔记 java学习 学习笔记 java
Java基础 java学习笔记 Java Java基础Markdown学习笔记,可转换成PDF、Word等格式
JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记
(完整版)最全的java学习笔记(必看).pdf
java鬼混笔记:JAVA发邮箱(带附件)
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...
Java JDK 5.0学习笔记:TP312JA L393.iso 随书光盘,欢迎大家下载 大家共享^A^
Java Swing组件:Jlist学习笔记Java Swing组件:Jlist学习笔记
在学习java过程中的笔记。
字符编码笔记:ASCII-Unicode和UTF-8 字符编码笔记:ASCII-Unicode和UTF-8 字符编码笔记:ASCII-Unicode和UTF-8
java学习笔记java学习笔记java学java学习笔记习笔记
Java学习笔记(必看经典) Java学习笔记(必看经典) Java学习笔记(必看经典)
java学习笔记