2012-11-12 97 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 

上述比較返回false,因爲我猜測第2行導致Ch?teau_La_Louvi?re。任何想法我可以做到這一點?Unicode字符串提取和比較

+2

對我來說,你的代碼片段工作得很好。檢查您的區域設置。同時檢查,'SYS.PROPS( 「file.encoding的」)'應該是'UTF-8' – 4e6

+0

似乎並沒有得以順利。我明確地將文件編碼設置爲UTF-8仍然沒有運氣。 –

+0

我在使用JDK7和它爲我工作的Mac上。 –

回答

0

由於4e6表示問題在於Java的標準配置。其中假設所有文件都以Latin1編碼。

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

這可以通過設置以下是固定的Java-OPTS

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

仍爲1和2會的工作,即使你不改變編碼。問題在於3.和4.。

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

'TOLOWER'會導致測試在4失敗,因爲「A」和「E」會被錯誤地解釋。這些字符將被編碼爲兩個到四個字節,其中每個將被小寫獨立地由此得到完全不同的結果爲「」château_la_louvière「」。