Я не уверен, что понимаю вопрос, но что-то вроде этого может помочь:
import java.nio.charset.CharsetEncoder;
...
StringBuilder buf = new StringBuilder(c.length());
CharsetEncoder enc = Charset.forName("gb2312");
for (int idx = 0; idx < c.length(); ++idx) {
char ch = c.charAt(idx);
if (enc.canEncode(ch))
buf.append(ch);
else {
buf.append("&#");
buf.append((int) ch);
buf.append(';');
}
}
String result = buf.toString();
Этот код не является надежным, потому что он не обрабатывает символы за пределами базовой многоязычной плоскости. Но перебирая кодовые точки в String
и используя canEncode(CharSequence)
метод CharsetEncoder
, вы сможете обрабатывать любой символ.