Как читать файлы, которые используют неподдерживаемые кодировки и / или кодировки в Java

Мне нужно прочитать файл CSV в приложение Java, но файл закодирован с использованием Western (Mac OS Roman), который не поддерживается в Java.

Было предложено использовать Byte Stream для чтения текста и преобразования всего, что больше 128, в пробел (символ ASCII 32). Но я понятия не имею, как это сделать. Я не знаю, как обращаться с каждым байтом за раз, как преобразовывать их, и когда я достиг конца строки, как затем взять эту строку "усеченного" текста, разделить его на массив и затем извлеките данные из нужных мне индексов.

SortedMap<String, OBJ_NAME> mapResults = new TreeMap<String, OBJ_NAME>();
String url = 'url-to-file';
InputStream inputStream = null;
InputStreamReader = null;
CSVReader = csvReader = null;
final Pattern regexPattern = Pattern.compile("^\\d{2}\\.\\d{1.3}$");

try {
    inputStream = new URL(url).openStream();

    reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
    csvReader = new CSVReader(reader, ',', '"', 1);
    List<String[]> lines = csvReacer.readAll();

    for (String[] line : lines) {
        // logic to grab data from first and second indices of the line
        OBJ_NAME objInstance = new OBJ_NAME();

        objInstance.setFieldOne(line[0]);
        objInstance.setFieldTwo(line[1]);
        mapResults.put(line[1], objInstance);
    }
} catch (Exception e) {
    throw new IOException(e);
} finally {
    // IOUtils from apache commons
    IOUtils.closeQuietly(inputStream);
    IOUtils.closeQuietly(reader);
    IOUtils.closeQuietly(csvReader);
}

Поскольку CSV использует неподдерживаемый формат, приведенная выше логика неправильно считывает данные, поскольку это не UTF-8, и поэтому я получаю гораздо меньше результатов, чем следовало бы. Я не уверен, должен ли я вводить его как ASCII и "прерывать" символы более 128 (что я не знаю, как сделать), или делать это с помощью Byte Stream (что я также не знаю, как это сделать),

Помогите? А также, вверните любого, кто выпускает документы с официальной информацией в устаревшие, неподдерживаемые кодировки.

0 ответов

Другие вопросы по тегам