Java неверный десятичный для расширенного ASCII Windows-1252

Как я могу получить правильный десятичный для расширенного ASCII на основе Windows-1252? Найденные несколько символов будут возвращаться как Unicode вместо номера ASCII, как показано ниже:

symbol: ’ expected: 146 return: 8217
symbol: ” expected: 148 return: 8221

1 ответ

(8217) - это символ Unicode "ПРАВАЯ ОДНОКВАЖНАЯ КАРТОЧКА" (U + 2019).
(8221) - это символ Unicode 'RIGHT DOUBLE QUOTATION MARK' (U + 201D).

Похоже, ваш код ожидает:
(146) Символ Unicode "ЧАСТНОЕ ИСПОЛЬЗОВАНИЕ ВТОРОЙ" (U + 0092).
(148) Юникод символ "ОТМЕНА ХАРАКТЕР" (U + 0094).

Которые на самом деле из кодовой страницы Windows-1252.

Итак, ваш код ожидает чтения Windows-1252, но получает Unicode, и декодирование Windows-1252 в Unicode уже произошло, когда Java прочитала ваш исходный файл.

Решение: поскольку ваш файл уже находится в Windows-1252, и ваш код этого хочет, считайте файл как байты, а не как текст.

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