• 编码


    JAVA程序运行时使用的是unicode编码,unicode编码是模型,其具体表现形式有utf-8,utf-16,utf-32等。

    utf-16对普通字符和汉字都是用2个字节。

    utf-32每个字符使用的都是3个字节进行编码,是定长的。

    utf-8使用的是变长编码,英文字符使用的是一个字节编码,byte的内容和ASCII是相同的。

          中文是3个字节

     base64并不能认为是字符的编码,可以认为是一种加密方式。常常用于对字节进行编码,对3字节编码会形成4字节的结果。BASE64加密简单粗暴。

    下面的测试说明:对文件进行读取和写以及string的转换如果不显示的指定字符编码,默认使用的是操作系统的编码

    package com.ydd.http;
    
    import java.io.UnsupportedEncodingException;
    import java.nio.charset.Charset;
    import java.util.Arrays;  
    /**
     * 对文件进行读取和写以及string的转换如果不显示的指定字符编码,默认使用的是操作系统的编码
     * @author yunzhu.ydd
     *
     */
    public class CharsetTest {
    
        public static void main(String[] args) throws UnsupportedEncodingException {
            String oldString="你好!";
            System.out.println(Arrays.toString("你好".getBytes())+"|"+Arrays.toString("你好".getBytes("utf-8"))+"|"+Arrays.toString("你好".getBytes("gbk"))+"|"+Charset.defaultCharset().displayName());
        }
    
    }

    运行结果如下(string.getBytes(void)默认是根据操作系统的编码生成byte数组):

    [-60, -29, -70, -61]|[-28, -67, -96, -27, -91, -67]|[-60, -29, -70, -61]|GBK

     虽然ISO-8859-1(一个字节)编码格式不能表示中文,但是也能将中文转换成ISO-8859-1格式,只是转换之后会丢数据,是乱码。转换也不会抛异常。

  • 相关阅读:
    十五周学习笔记
    十四周学习笔记
    程序员修炼之道二
    程序员修炼之道
    构建之法十七
    十三周学习笔记总结
    个人课程总结
    构建之法十六
    构建之法十二
    文章单词统计接龙
  • 原文地址:https://www.cnblogs.com/YDDMAX/p/5360709.html
Copyright © 2020-2023  润新知