2016-10-26 7 views
0

에서 제거되는 대시 변경은 예측 가능한 결과를 생산 :넷빈즈, 문자열 비교의 결과는 이전에 넷빈즈에서 파일로드를 실행하고 비교를 위해 문자열 항목을 잡아 문자열

의 마음을 얻기 위해 simpliflied 오버

(문제) 파일 1 :. UTF-8 인코딩은 파일 2 : ISO-8859-1

넷빈즈

String strFromFile1 = "A - B"; String strFromFile2 = "A - B";

을 인코딩

(strFromFile1 == strFromFile2)이 참으로 평가됩니다.

: 없음 식별 패턴, (-)

그러나, 이클립스 프로젝트를 이동 한 후, 나는 문자열 값이 가끔 대시를 제거하고, 단지 내 많은 파일 중 하나에 대한 변경 것이다 때때로 발견 ECLIPSE

String strFromFile1 = "A B"; String strFromFile2 = "A - B";

은 (strFromFile1 == strFromFile2)가 거짓으로 평가 하였다.

비교가 올바르지 만 왜 첫 번째 문자열이 변경 되었습니까? 원본 텍스트 파일이 변경되지 않았습니다. 그들은 둘 다 대쉬를 포함했다. 그러나 각 파일의 문자 인코딩이 다릅니다.

왜 이런 일이 발생 했습니까? Eclipse가 특정 파일의 특정 문자를 무시하도록 선택하는 이유는 무엇입니까? 동일한 인코딩 유형 (ISO-8859-1, UTF-8)의 다른 파일에는이 문제가 발생하지 않았습니다.

답변

0

NetBeans 대 Eclipse 환경 문자 인코딩과 관련이 있다고 생각됩니다.

그러나 실행 구성을 실행> 기타> 인코딩> UTF-8로 변경하면 문제가 발생하지 않습니다.

이클립스의 설정은 일반 수준으로 변경했다 :이 설정을 변경 한 후

창> 환경 설정> 텍스트 파일 인코딩> 기타> UTF-8

이 문제였다 문자열 비교를 사용하는 모든 테스트가 예상대로 통과되었습니다 (Eclipse로 마이그레이션하기 전에 NetBeans에서와 같이).

+0

문자열을 비교하는 데'=='을 사용하면 ** 일반적으로 작동하지 않음을 유의하십시오 http://stackoverflow.com/q/513832/2670892 –

+0

물론 가능합니다. 나는 그 설명을 단순화했다. 하지만 실제로 null 값을 확인하고 equals() 메서드를 사용하는 사용자 지정 DeepEquals 함수를 사용했습니다. – TinkerTenorSoftwareGuy