我正面临一种情况,即我在保存到 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();
}