В моем присвоенном проекте, оригинальный автор написал функцию:Обработка китайских струн в Java?
public String asString() throws DataException
{
if (getData() == null) return null;
CharBuffer charBuf = null;
try
{
charBuf = s_charset.newDecoder().decode(ByteBuffer.wrap(f_data));
}
catch (CharacterCodingException e)
{
throw new DataException("You can't have a string from this ParasolBlob: " + this, e);
}
return charBuf.toString()+"你好";
}
Обратите внимание, что константа s_charset определяются как:
private static final Charset s_charset = Charset.forName("UTF-8");
Пожалуйста, обратите внимание, что я жестко закодирован китайским string в возвращаемой строке.
Теперь, когда поток программы достигает этот метод, он будет бросать следующее исключение:
java.nio.charset.UnmappableCharacterException: Input length = 2
И еще Interstingly, жестко закодированные китайские строки будут показаны как «??» на консоли, если я сделаю System.out.println().
Я думаю, что эта проблема весьма интересна в отношении Локализации. И я попытался изменить его на Charset.forName («GBK»);
но похоже не решение. Кроме того, я установил кодировку класса Java как «UTF-8».
У любого эксперта есть опыт в этом отношении? Не могли бы вы поделиться им? Заранее спасибо!
+1, однако я не уверен, что OP означает консоль затмения. Если вы используете, например, окна, это сложнее. Но эта дискуссия поможет вам: http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how – AlexR
Теперь он отлично работает на моей консоли, спасибо. Но моя конечная цель - извлечь строки и вывести их в файл csv. Это все еще показано как ??? в файле csv. Я уже установил кодировку для csv. – Kevin
@ Kevin Читать [это] (http://stackoverflow.com/a/16436195/1163607). – NINCOMPOOP