java - 문자열 인코딩 정보
我想大声告诉你
我想大声告诉你 2017-05-27 17:41:40
0
1
676
으아악

출력:
[-106, -85, 78, 22, 63, 78, -32, 58, -86, 77, 16, 81, -86, 81, -46, 4]

[-17, -65, -67, -17, -65, -67, 78, 22, 63, 78, -17, -65, -67, 58, -17, -65, -67, 77, 16, 81, -17, -65, -67, 81, -17, -65, -67, 4]

인코딩 전 출력과 인코딩 후 디코딩이 다른 이유는 무엇인가요?

我想大声告诉你
我想大声告诉你

모든 응답(1)
黄舟

아마도 그럴 거라고(new String(b)).getBytes().equals(b),实际上并非如此。(尽管new String(s.getBytes()).equals(s)생각하실 겁니다. )

Becausebyte[]转换成String时,有些字节是未必能转换成字符的,比如第一个-106、第二个-85就是,所以转换成String时前两个就变成了未知字符(表面上会显示?,但实际上是一个Unicode字符),再转成byte[](你这边defaultCharset应该是UTF-8) 각각의 알 수 없는 문자는 3바이트가 됩니다.

GBK를 사용하는 경우 상황은 나쁘지 않지만 여전히 약간 다릅니다.

으아아아

결론은 다음과 같습니다. 해시 값을 표현하기 위해 문자열을 사용하는 경우 byte[]를 문자열로 강제 변환할 수는 없지만 평소대로 16진수 표현으로 변환합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿