Regex Unicode字符串提取和比较

Regex Unicode字符串提取和比较,regex,scala,unicode,Regex,Scala,Unicode,上面的比较返回false,因为我猜第2行的结果是Ch?teau_La_Louvi?re。有什么办法可以做到这一点吗?正如4e6所说,问题在于Java的标准配置。假设所有文件都用拉丁语编码 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

上面的比较返回false,因为我猜第2行的结果是Ch?teau_La_Louvi?re。有什么办法可以做到这一点吗?

正如4e6所说,问题在于Java的标准配置。假设所有文件都用拉丁语编码

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
这可以通过设置以下java选项来解决

1.val Matcher = """.+/(.*)""".r
2.val Matcher(title) = """http://en.wikipedia.org/wiki/Château_La_Louvière"""
还是1。二,。即使您不更改编码,也会起作用。问题在于3。和4

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

“toLower”将导致在4中进行测试。失败,因为“–”和“è”将被错误地解释。这些字符将被编码为两到四个字节,每个字节将独立地小写,从而产生一个完全不同的结果,即“cháteau_la_louvière”。

对于我来说,您的代码片段工作得很好。检查您的区域设置。还要检查,
sys.props(“file.encoding”)
应该是似乎不起作用的
UTF-8
。我显式地将文件编码设置为UTF-8仍然不走运。我在mac上使用JDK7,它对我有效。这对我也有效-可能是因为我的scala 2.10
3.val lowerCase = title.toLower
4.if(lowercase.equals("château_la_louvière")) //do something