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, и ваш код этого хочет, считайте файл как байты, а не как текст.