`

java学习笔记:字符的编码与解码练习

    博客分类:
  • java
阅读更多

编码:字符串转成字符数组

解码:字节数组转成字符串

 

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);
  }
}

 

0
1
分享到:
评论

相关推荐

    (完整版)最全的java学习笔记(必看).pdf

    Java学习笔记 ...* 2.8 字符串:Java语言中的字符串是一种特殊的数据类型,用于存储字符串数据。 Java学习笔记涵盖了Java技术基础和Java语言基础两方面的知识点,为Java初学者提供了系统的学习资源。

    Java学习笔记:JSONObject与JSONArray的使用.docx

    Java学习笔记:JSONObject与JSONArray的使用.docx

    Java学习笔记:JSONObject与JSONArray的使用.pdf

    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学习笔记》是一本深受程序员喜爱的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学习笔记1是学习Java过程中的笔记,主要记录了Eclipse开发环境中的快捷键使用、编辑功能、查找和调试等知识点。 Eclipse快捷键 Eclipse中有许多快捷键,掌握这些快捷键可以大大提高开发效率。...

    java学习笔记.zip

    java学习笔记java学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记...

    Java 学习笔记Java学习笔记

    1. 基础语法:Java的基础语法包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、比较、逻辑、位操作等)、流程控制(if条件语句、switch选择语句、for、while循环、do-while循环)以及方法...

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O

    Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...

    Java JDK 5.0学习笔记:TP312JA L393.iso

    Java JDK 5.0学习笔记:TP312JA L393.iso 随书光盘,欢迎大家下载 大家共享^A^

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    Java基础 学习笔记 Markdownr版

    3. 输入/输出(IO)流:Java的15IO流.md文件深入解析了IO流的使用,包括文件流、字符流、字节流以及缓冲流的处理。IO流是数据传输的桥梁,允许程序与外部设备进行数据交换。 4. 多线程:在10多线程.md中,介绍了...

    java学习笔记.pdf

    "Java学习笔记" 本资源是一个关于Java编程语言的学习笔记,涵盖了Java的基础知识、语法、数据类型、变量、类型转换等方面的内容。 标题:"java学习笔记.pdf" 描述:"想自学的小伙伴可以看俺" 标签:"Java" 部分...

    读书笔记:idea编码工程包括java、scala、mongo、redis、spark等.zip

    读书笔记:idea编码工程包括java、scala、mongo、redis、spark等

    Java学习笔记(必看经典).pdf

    本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...

    读书笔记:《Netty实战》练习.zip

    读书笔记:《Netty实战》练习

    读书笔记:scala编程相关的练习.zip

    读书笔记:scala编程相关的练习

Global site tag (gtag.js) - Google Analytics