zoukankan      html  css  js  c++  java
  • String类的编码和解码问题

    我们前面知道同一个字符在利用不同的编码表得到的结果一般是不一样的。

    这里讨论个字符串的编码和解码问题

    字符串的一些方法:

    String(byte[] b,Charset charset);

    String(byte[] b,int offset,int length,Charset charset);

    byte[] getBytes(String charsetName)

    什么是编码解码?

    编码:把看得懂的变成看不懂的

    解码:把看不懂的变成看得懂的

    编码问题只要编码解码使用的而编码表是一致的就即可解决

    一个小例子:谍战片(发电报,接电报)

    码表:  小本子

        数值  字符

    信息:

    今天下午2:00,老地方见

    发电报:  字符---数值----二进制   电报机101010...

    收电报:  二进制----十进制---码表----字符-----拼接成信息

    windows的默认编码是本地编码是GBK

    package com.StringTransform;
    
    import java.io.UnsupportedEncodingException;
    import java.util.Arrays;
    
    public class StringTransformDemo {
        public static void main(String[] args) throws UnsupportedEncodingException {
            String s="你好";
    //        byte[] b=s.getBytes();//[-60, -29, -70, -61] 编码  2个字节代表一个中文
    //        byte[] b=s.getBytes("GBK");//[-60, -29, -70, -61] 编码结果完全相同,还可以多次测试知道,默认编码是GBK
            byte[] b=s.getBytes("utf-8");//[-28, -67, -96, -27, -91, -67] utf-8一般将中文变成3个字节表示一个中文
            System.out.println(Arrays.toString(b));
    //        String message=new String(b);//解码  使用GBK编码的时候直接解码也成功,所以默认解码方式也是GBK  直接解码utf-8出现浣犲ソ
            String message=new String(b,"utf-8"); //使用对应的编码表解码发现就能得到想要的信息
            System.out.println(message);
        }
    
    }
  • 相关阅读:
    三大范式
    html 横线的代码
    CSS下拉 菜单3.27第一次
    JS页面三种打开方式及对话框
    函数整理
    3.22整理作业
    for循环,if 练习
    php测试题
    设计模式
    面向对象的三大特性
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5573778.html
Copyright © 2011-2022 走看看