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


    前言:报文在项目之间传递的时候出现验签失败,但是打印出来的需要验签的字符串显示结果都是正确的;直接将传送的字节流(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的时候一定要把编码方式加上。

  • 相关阅读:
    windows 共享文件夹 给 mac
    给mac配置adb 路径
    关于android 加载https网页的问题
    http tcp udp ip 间的关系
    手机服务器微架构设计和实现专题
    添加ssh key
    本人对于线程池的理解和实践
    使用Android Butterknife
    记一次失败的笔试(华为研发工程师-汽水瓶笔试题)
    简易坦克大战python版
  • 原文地址:https://www.cnblogs.com/garinzhang/p/3082009.html
Copyright © 2020-2023  润新知