Я столкнулся с ситуацией, когда я получаю суррогатные символы в тексте, которые я сохраняю на 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();
}