utf-유니코드빅

1658 단어 unicode
오늘 다음과 같은 이상한 문제가 발생했습니다.
      public static String utfToUni(String str) {
        if (str == null) {
            return str;
        }
        try {
            byte[] ss = str.getBytes("UTF-8");
            str = new String(ss, "UnicodeBig");
        } catch (UnsupportedEncodingException e2) {
            e2.printStackTrace();
        }
        return str;
    }

     public static void main(String... strings) {

        System.out.print(Test.utfToUni("h"));

     }

수정 코드는 다음과 같습니다.
 public static String utfToUni(String str) {
        if (str == null) {
            return str;
        }
        try {
            byte[] ss = str.getBytes("UTF-8");
            ss = Test.patch(ss);
            str = new String(ss, "UnicodeBig");
        } catch (UnsupportedEncodingException e2) {
            e2.printStackTrace();
        }
        return str;
    }

    /**
     *    0
     * 
     * @param b
     * @return
     */
    public static byte[] patch(byte[] b) {
        byte[] ss;
        if (b.length % 2 != 0) {
            ss = new byte[b.length + 1];
            System.arraycopy(b, 0, ss, 0, b.length);
            ss[b.length] = 0;
            return ss;

        }
        return b;
    }

이렇게 해서 결과가 나왔습니다. 제가 분석해 보니 유니코드 빅은 두 바이트이기 때문에 한 바이트면 오류가 발생할 수 있습니다. 정확하게 어떻게 설명해야 할지 모르겠습니다!

좋은 웹페이지 즐겨찾기