자바 byte [] 스 트 링 다시 byte [] 불일치 문제
7319 단어 자바
byte[] bytes = Hex.decode("1a91031001");
String str = new String(bytes);
byte[] after = str.getBytes();
System.out.println("before: " + Hex.encode(bytes) + "--" + Arrays.toString(bytes));
System.out.println("after : " + Hex.encode(after) + "--" + Arrays.toString(after));
출력:
before: 1a91031001--[26, -111, 3, 16, 1]
after : 1a3f031001--[26, 63, 3, 16, 1]
자 료 를 찾 아 보 니 인 코딩 의 문제 입 니 다. 제 시스템 에서 자바 의 기본 인 코딩 은 GBK 입 니 다.
System.out.println(Charset.defaultCharset().name()); // 输出:GBK
이것 은 다 중 바이트 인 코딩 입 니 다. 즉, 여러 바이트 로 한 문 자 를 표시 해 야 하기 때문에 바이트 배열 이 문자열 로 인 코딩 된 후에 다시 돌아 오 면 원래 와 일치 하지 않 는 문제 가 발생 할 수 있 습 니 다. 해결 방법:
"ISO - 8859 - 1"과 같은 단일 바이트 인 코딩 형식 을 지정 합 니 다.
byte[] bytes = Hex.decode("1a91031001");
String str = new String(bytes, Charset.forName("ISO-8859-1"));
byte[] after = str.getBytes(Charset.forName("ISO-8859-1"));
System.out.println("before: " + Hex.encode(bytes) + "--" + Arrays.toString(bytes));
System.out.println("after : " + Hex.encode(after) + "--" + Arrays.toString(after));
출력:
before: 1a91031001--[26, -111, 3, 16, 1]
after : 1a91031001--[26, -111, 3, 16, 1]
참고 글:https://www.cnblogs.com/Hays4Blog/p/6755550.html https://blog.csdn.net/wusj3/article/details/80606728
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.