【发布时间】:2012-10-03 17:41:48
【问题描述】:
我面临的情况是,我在保存到 MySql 5.1 的文本中获得了代理字符。由于此处不支持 UTF-16,因此我想在将其保存到数据库之前通过 java 方法手动删除这些代理对。
我现在已经编写了以下方法,我很想知道是否有直接和最佳的方法来处理这个问题。
提前感谢您的帮助。
public static String removeSurrogates(String query) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < query.length() - 1; i++) {
char firstChar = query.charAt(i);
char nextChar = query.charAt(i+1);
if (Character.isSurrogatePair(firstChar, nextChar) == false) {
sb.append(firstChar);
} else {
i++;
}
}
if (Character.isHighSurrogate(query.charAt(query.length() - 1)) == false
&& Character.isLowSurrogate(query.charAt(query.length() - 1)) == false) {
sb.append(query.charAt(query.length() - 1));
}
return sb.toString();
}
【问题讨论】:
-
你说得对,布伦丹。我会修改。除此之外,您还有什么好的方法可以删除代理?
标签: java string surrogate-pairs