문제

'gerald.o'leary'를 포함 해야하는 텍스트 문자열 (Java 문자열)이 있습니다.

Realty에서는 REST, 'C2'외에 제어 문자가 포함되어 있습니다.나는 16 진수 덤프를 포함 시켰으며, 16 진수 덤프의 image1.png를 참조하십시오.

여기에 이미지 설명

클라이언트에서 SQL을 실행하고 Hex Editor에 붙여 넣기를 사용하여 DB에 저장하고 다시 읽으려면 C2를 3F로 대체 한 C2를 참조하십시오.

여기에 이미지 설명

나는 그것으로 살아야했지만,이 두 문자열들이 String.equals ()를 사용하여 Java에서 비교 될 때, false가 리턴된다.

여기에 무슨 일이 일어나고 있는지 설명 해주세요?!

도움이 되었습니까?

해결책

SQL DB가 UTF-8 / 유니 코드 문자를 저장할 수 있는지 확인 했습니까 (즉, ISO-8859-1, ASCII 또는 이와 유사하지 않음)?

  • 처음으로 문자열을 표준 출력으로 출력하여 올바른 문자가 실제로 포함되어 있는지 확인하십시오 (?? 또는 0xC2 0x92= Â'는 아닙니다).
  • 그런 다음 데이터베이스 문자 집합을 확인하십시오.설명서를 참조하십시오.

다른 팁

Hex Dump가 있는지 모르지만 Java 문자열은 유니 코드 문자열이므로 문자와 바이트간에 1 : 1의 서신이 없습니다.문자열에는 단일 바이트로 표시 할 수없는 유니 코드 문자가 포함되어 있으며 문자 처리 (이를 대소 문자로 가정하는 경우)는 버그가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top