Я бы предложил использовать члены строки, но с явной кодировкой :
byte[] bytes = text.getBytes("UTF-8");
String text = new String(bytes, "UTF-8");
Используя явную кодировку (и ту, которая поддерживает все Unicode), вы избегаетепроблемы простого вызова text.getBytes()
и т. д .:
- Вы явно используете конкретную кодировку, поэтому вы знаете, какую кодировку использовать позже, а не полагаться на платформу по умолчанию.
- Вы знаете, что он будет поддерживать весь Unicode (в отличие, скажем, от ISO-Latin-1).
РЕДАКТИРОВАТЬ: Даже если UTF-8 является кодировкой по умолчанию на Android, я определенно будупрямо об этом.Например, этот вопрос говорит только «в Java или Android» - поэтому вполне возможно, что код в конечном итоге будет использоваться на других платформах.
В основном, учитывая, что обычная платформа Java может имеют разные кодировки по умолчанию, я думаю, что лучше быть абсолютно явным.Я видел слишком много людей, использующих кодировку по умолчанию и теряющих данные, чтобы пойти на этот риск.
РЕДАКТИРОВАТЬ: В спешке я забыл упомянуть, что вам не нужно использовать имя кодировки - вместо этого вы можете использовать Charset
.Использование Гуава Я бы действительно Использование:
byte[] bytes = text.getBytes(Charsets.UTF_8);
String text = new String(bytes, Charsets.UTF_8);