编码:字符串转成字符数组
解码:字节数组转成字符串
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学习笔记 ...* 2.8 字符串:Java语言中的字符串是一种特殊的数据类型,用于存储字符串数据。 Java学习笔记涵盖了Java技术基础和Java语言基础两方面的知识点,为Java初学者提供了系统的学习资源。
Java学习笔记:JSONObject与JSONArray的使用.docx
Java学习笔记:JSONObject与JSONArray的使用.pdf
Java字符串学习笔记,比较系统的讲解了Java的字符串知识
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
《林信良Java学习笔记》是一本深受程序员喜爱的Java学习资源,尤其因其繁体字版,对于中文读者来说,提供了更为亲切的阅读体验。这本书深入浅出地讲解了Java编程语言的基础知识和高级特性,旨在帮助初学者快速掌握...
著作:《JAVA 学习笔记》、《Spring 技术手册》,为SUN官方教材主要编写成员之一 博客: http://blog.csdn.net/caterpillar_here 详细信息: http://www.china-pub.com/computers/common/info.asp?id=31664
Java学习笔记1 Java学习笔记1是学习Java过程中的笔记,主要记录了Eclipse开发环境中的快捷键使用、编辑功能、查找和调试等知识点。 Eclipse快捷键 Eclipse中有许多快捷键,掌握这些快捷键可以大大提高开发效率。...
java学习笔记java学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记...
1. 基础语法:Java的基础语法包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、比较、逻辑、位操作等)、流程控制(if条件语句、switch选择语句、for、while循环、do-while循环)以及方法...
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...
Java JDK 5.0学习笔记:TP312JA L393.iso 随书光盘,欢迎大家下载 大家共享^A^
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
3. 输入/输出(IO)流:Java的15IO流.md文件深入解析了IO流的使用,包括文件流、字符流、字节流以及缓冲流的处理。IO流是数据传输的桥梁,允许程序与外部设备进行数据交换。 4. 多线程:在10多线程.md中,介绍了...
"Java学习笔记" 本资源是一个关于Java编程语言的学习笔记,涵盖了Java的基础知识、语法、数据类型、变量、类型转换等方面的内容。 标题:"java学习笔记.pdf" 描述:"想自学的小伙伴可以看俺" 标签:"Java" 部分...
读书笔记:idea编码工程包括java、scala、mongo、redis、spark等
本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...
读书笔记:《Netty实战》练习
读书笔记:scala编程相关的练习