zoukankan      html  css  js  c++  java
  • 关于Java的字符编码

    package 测试想法的小示例代码;
    
    import java.io.CharArrayWriter;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    import java.util.Arrays;
    
    public class 关于字符串转码 {
    
        private static String printByteArray(byte[] byteArray) {
        String javaForm = "Java中的有符号表示形式: " + Arrays.toString(byteArray) + " ; ";
        CharArrayWriter caw = new CharArrayWriter();
        PrintWriter outs = new PrintWriter(caw);
        outs.print("十六进制表示形式(有用的形式): ");
        outs.print("[");
        for (int i = 0; i < byteArray.length; i++) {
            outs.format("0x%02X, ", byteArray[i]);
        }
        String hexForm = caw.toString();
        hexForm = hexForm.substring(0, hexForm.length() - 2);
        hexForm = hexForm + "]";
    
        return javaForm + hexForm;
        }
    
        private static void printStringCode(String str) {
        try {
            System.err.println(""" + str + ""编码如下:");
            System.out.println("	(UTF-8): " + printByteArray(str.getBytes("UTF-8")));
            System.out.println("	(UTF-16): " + printByteArray(str.getBytes("UTF-16")));
            System.out.println("	(GBK): " + printByteArray(str.getBytes("GBK")));
            System.out.println("	(GB2312): " + printByteArray(str.getBytes("GB2312")));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    
        return;
        }
    
        public static void main(String[] args) throws Exception {
        // 0xCE,0xD2 是'我'字的GBK编码
        // 因为Java编译器能识别的byte类型最大表示范围是-128~127,但由于0xCE和0xD2都大于127
        // 故要先把这两个数字转为负数存进byte类型中
        // (因为计算机中是以补码形式保存数据,故以负数存进byte数组后,实际保存的二进制数据还是0xCE和0xD2)
        byte[] getParam = new byte[] { -((byte) (256L - 0xCE)), -((byte) (256L - 0xD2)) };
        String value = new String(getParam, "ISO-8859-1"); // 将'我'字的GBK编码数据原样复制到到String对象中
        byte[] b = value.getBytes("ISO-8859-1"); // 将value字符串对象中的数据原样复制到byte数组b中.
        String newValue = new String(b, "GBK"); // 将数组b中的数据以GBK编码的方式转码成字符串对象的内部编码形式(GBK->UTF-16)
        System.out.println(newValue);
    
        printStringCode("我");
    
        printStringCode("们");
        }
    }
  • 相关阅读:
    SQL开窗函数
    mysql中可以实现类似if判断的方法
    sql中COUNT(*)、COUNT(字段名)的区别
    shiro学习笔记_0600_自定义realm实现授权
    shiro学习笔记_0500_授权
    shiro学习笔记_0400_自定义realm实现身份认证
    shiro学习笔记_0300_jdbcRealm和认证策略
    shiro学习笔记_0200_认证
    点击div跳转的方法
    jq获取网页url
  • 原文地址:https://www.cnblogs.com/tonekit/p/12131439.html
Copyright © 2011-2022 走看看