2012-11-12 3 views
1
1.val Matcher = """.+/(.*)""".r 
2.val Matcher(title) = """http://en.wikipedia.org/wiki/Château_La_Louvière""" 
3.val lowerCase = title.toLower 
4.if(lowercase.equals("château_la_louvière")) //do something 

2 번째 줄이 Ch? teau_La_Louvi? re 결과를 얻었 기 때문에 위의 비교 결과는 false를 반환합니다. 어떻게하면이 아이디어를 얻을 수 있습니까?유니 코드 문자열 추출 및 비교

+2

나를 위해 귀하의 발언은 잘 작동합니다. 로케일 설정을 확인하십시오. 그리고 또한'sys.props ("file.encoding")'가'UTF-8'이어야 함을 확인하십시오. – 4e6

+0

그것은 작동하지 않습니다. 명시 적으로 UTF-8 파일 인코딩을 여전히 운이 좋게 설정했습니다. –

+0

저는 Mac에서 JDK7을 사용하고 있습니다. –

답변

0

4e6과 마찬가지로이 문제는 Java의 표준 구성 내에 있습니다. Latin1로 인코딩 된 모든 파일을 가정합니다.

1.val Matcher = """.+/(.*)""".r 
2.val Matcher(title) = """http://en.wikipedia.org/wiki/Château_La_Louvière""" 

은 다음과 같은 설정에 의해 해결 될 수는 인코딩을 변경하지 않는 경우에도 작동합니다

export JAVA_OPTS='-Dfile.encoding=UTF-8' 

여전히 1.과 2. 자바를-OPTS. 문제는 3.와 4.에 있습니다.

3.val lowerCase = title.toLower 
4.if(lowercase.equals("château_la_louvière")) //do something 

' "A"와 "E"가 잘못 해석되기 때문에'tolower를 '실패 4에서 테스트를하게됩니다. 이 문자들은 2 바이트에서 4 바이트로 인코딩되며, 각각은 독립적으로 소문자로 처리되므로 'château_la_louvière'와 완전히 다른 결과를 산출합니다.