Проблема кодировки символов Java Linux - PullRequest
1 голос
/ 13 мая 2011

У меня проблема с кодировкой символов в linux. Я извлекаю контент из amazon S3, который был сохранен с использованием кодировки UTF-8. Контент написан на китайском языке, и я могу правильно просматривать его в браузере.

Я использую amazon SDK для извлечения контента и обновления его. Вот код, который я использую:


StringBuilder builder = new StringBuilder();
S3Object object = client.getObject(new GetObjectRequest(bucketName, key));
        BufferedReader reader = new BufferedReader(new 
                InputStreamReader(object.getObjectContent(), "utf-8"));
while (true) {
    String line = reader.readLine();
    if (line == null) 
        break;
    builder.append(line);
}

Этот фрагмент кода прекрасно работает в среде Windows, так как я смог обновить содержимое и сохранить его обратно, не перепутав в нем китайские иероглифы.

Но в среде Linux это действует по-другому. Код не может правильно перевести символы, китайские символы отображаются как ???

Я не уверен, что здесь происходит не так. Любые указатели будут оценены.

-Спасибо

1 Ответ

3 голосов
/ 13 мая 2011

Набор символов по умолчанию отличается для используемых вами двух ОС.

Для начала вы можете подтвердить разницу, распечатав набор символов по умолчанию.

Charset.defaultCharset.name()

Где-то в вашем кодеЯ думаю, что этот набор символов по умолчанию используется для преобразования строк.Правильная процедура должна состоять в том, чтобы отследить это и указать UTF-8.

Не видя этого кода, я могу только предложить «читерский» способ сделать это: явно установить кодировку по умолчанию, в началеваш код или при запуске Java.Смотрите здесь для изменения кодировки по умолчанию: Настройка кодировки символов Java по умолчанию?

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...