如何确定当前系统编码方式

前言:报文在项目之间传递的时候出现验签失败,但是打印出来的需要验签的字符串显示结果都是正确的;直接将传送的字节流(byte数组)打印出来,发现了其中中文的byte值不一样,初步断定是报文在传输和接收时的编码方式不一样;但是我的两个项目都是布署在一台机器上的,应该不会出现此问题,接下来,一步步找出真正原因:

确定当前系统编码方式,其实从工程中的属性就可以看出来,但是用代码验证一下更靠谱:

        String s = "中文集abc结果";

        byte[] b = s.getBytes();

        for(byte i : b) {

            System.out.print(i + ",");

        }

        System.out.println("");

        String t;

        try {

            t = new String(b, "UTF-8"); // 挨个换编码方式来试,一般就UTF-8和GBK

            byte[] c = t.getBytes();

            for(byte i : c) {

                System.out.print(i + ",");

            }

        } catch (UnsupportedEncodingException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

验证了当前系统的编码方式,接下来就挨个试喽:

最后发现在验签的时候都是使用的默认的方法:"".getBytes();把两边的编码方式改成一致即修复问题

看来真是伤不起,以后使用"".getBytes的时候一定要把编码方式加上。

你可能感兴趣的:(编码)