zoukankan      html  css  js  c++  java
  • 如何确定当前系统编码方式

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

  • 相关阅读:
    LeetCode:Remove Duplicates from Sorted List
    LeetCode:Remove Nth Node From End of List
    LeetCode:Delete Node in a Linked List
    LeetCode:Rotate Image
    LeetCode:Anagrams(字母颠倒)
    LeetCode:Single NumberⅡ
    LeetCode:Single Number
    LeetCode:Longest Common Prefix
    bzoj1025
    bzoj1024
  • 原文地址:https://www.cnblogs.com/garinzhang/p/3082009.html
Copyright © 2011-2022 走看看