Я пишу программу Java, которая сохраняет данные в текстовые файлы UTF8. Тем не менее, я также хотел бы предоставить вариант для сохранения в IBM437 для совместимости со старой программой, которая использует файлы файлов того же типа.Проверьте, могут ли данные быть представлены в указанной кодировке
Как проверить, не отображаются ли данные, которые пользователь пытается сохранить, в IBM437? В настоящий момент файл сохраняется без жалоб, но приводит к замене необычных символов вопросительными знаками.
Я бы предпочел, чтобы я мог показать пользователю предупреждение о том, что данные, которые они сохраняют, не поддерживаются в IBM437. Затем пользователь может иметь возможность вручную заменять символы ближайшим эквивалентом ASCII.
Текущий код для сбережений:
String encoding = "UTF-8";
if (forceLegacySupport)
{
// Force character encoding to IBM437
encoding = "IBM437";
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(saveFile.getAbsoluteFile()), encoding));
IOController.writeFileToDisk(bw);
bw.close();
Какой код вы используете для сохранения данных? –
Charset имеет метод getEncoder(), возвращающий CharsetEncoder. CharsetEncoder имеет метод canEncode (char), возвращающий логическое значение. Javadoc очень полезен. –
Мои полные и глубокие извинения @ JBNizet для того, чтобы пропустить это в javadoc. – PeteBrew