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();
}