특수 문자 및 자바 문자열
-
12-12-2019 - |
문제
'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의 서신이 없습니다.문자열에는 단일 바이트로 표시 할 수없는 유니 코드 문자가 포함되어 있으며 문자 처리 (이를 대소 문자로 가정하는 경우)는 버그가 있습니다.
제휴하지 않습니다 StackOverflow