我正在研究从MySQL数据库接收数据的GWT 2.6.1项目。
一切正常,但我对德语中的öäüÖÄÜ(特殊字符)有问题。
public void onSuccess(RPCObjectStringArray result) {
String[] resultArray = result.getStringarray();
Arrays.sort(resultArray,new ComparenoCaseUmlaut());
for (int i = 0; i < resultArray.length; i++) {
System.out.println(result[i]);
}
}
public class ComparenoCaseUmlaut implements Comparator<String> {
@Override
public int compare(String arg0, String arg1) {
Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.SECONDARY); // non case sensitive
return collator.compare(arg0,arg1);
}
}
但是,当GWT不支持collator lib时,这不起作用。
所以 - 我试过这个(为了让它易于理解 - 我已经将resultArray更改为一个例子):
String[] resultArray = { "Abc", "öbc", "BBC", "the", "abd", "X"};
public class ComparenoCaseUmlaut implements Comparator<String> {
@Override
public int compare(String arg0, String arg1) {
String string0 = arg0.toLowerCase();
String string1 = arg1.toLowerCase();
string0.replace("ä", "a");
string0.replace("ö", "o");
string0.replace("ü", "u");
string0.replace("ß", "s");
string1.replace("ä", "a");
string1.replace("ö", "o");
string1.replace("ü", "u");
string1.replace("ß", "s");
return string0.compareTo(string1);
}
结果:
“ABC”
“ABD”
“BBC”
“中的”
“X”
“OBC”
我调试过.replace函数没有按预期运行。它无法取代“ö”字符 - 因为他找不到它。与“==”相比较......
我已经将我的eclipse项目中的charset更改为UTF-8 - 没有任何改变。
我是java的新手(大约几个月,也是GWT,但编程中的老人),所以请给我一些细节 - 或链接......我可以自己学习并将结果带回来这里。但目前我不知道我必须开始......
我读了一些关于eclipse插件和GWT国际化的内容,但听起来太高了,无法理解。否则我会学到它 - 但它会有用吗?
答案 0 :(得分:0)
好的 - 我再次使用Marvins提示进行测试 - 它正在工作:)非常愚蠢的错误......
在我将项目更改为UTF-8之前,我尝试了正确的方法。但由于我改为UTF-8字符集,我没有再尝试过,所以我遇到了这个错误的代码,因为我想证明一个错误是什么都没有:)
我改变了它......
public class ComparenoCaseUmlaut implements Comparator<String> {
@Override
public int compare(String arg0, String arg1) {
String string0 = arg0.toLowerCase();
String string1 = arg1.toLowerCase();
string0 = string0.replace("ä", "a");
string0 = string0.replace("ö", "o");
string0 = string0.replace("ü", "u");
string0 = string0.replace("ß", "s");
string1 = string1.replace("ä", "a");
string1 = string1.replace("ö", "o");
string1 = string1.replace("ü", "u");
string1 = string1.replace("ß", "s");
return string0.compareTo(string1);
}
}
在我的结果数组中有一些令人毛骨悚然的区分大小写...但现在暂时搞清楚...