Внезапная проблема с кодировкой файла без видимой причины - PullRequest
0 голосов
/ 27 сентября 2018

Я работаю с приложением, которое читает файл json в течение нескольких месяцев.

Неожиданно на некоторых устройствах он начал давать сбой.(Устройства, на которых он действительно работал раньше ...)

Я использую это для чтения файла json (Не знаю, является ли это лучшим способом сделать это, но, как я уже сказал, он работал нормально ввсе устройства):

InputStream inputStream = getResources().openRawResource(R.raw.default_json_file);
String jsonString = new Scanner(inputStream).useDelimiter("\\A").next();

На устройствах, где происходит сбой, это выглядит примерно так:

��{��
��
��  ��"��c��a��t��e��g��o��r��i��e��s��"��:�� ��[��
��
...

Вы можете прочитать что-то между символами that, которое выглядит как содержимое jsonно там не должно быть ничего ...

Так что, если я изменю его на использование UTF-16 следующим образом:

Scanner(inputStream, "UTF-16")

Он начинает работать на этих устройствах, но затем на других (Где это работает без указания какой-либо кодировки) я получаю что-то вроде этого:

笊ढ捡瑥杯物敳∺⁛ਉॻਉउ≮慭攢㨠≅慴楮朠慮搠摲楮歩湧∬ਉउ≩浡来猢㨠嬢敡瑩湧ㄢⰠ≥慴楮朲∬•敡瑩湧㌢Ⱐ≥慴楮朴∬•敡瑩湧㔢崊उ紬

Я проверил кодировку файла (OSX)

file ./res/raw/default_json_file
./res/raw/default_json_file: UTF-8 Unicode text

Так что это подтверждает, что UTF-8 - правильная кодировка (я полагаю, что по умолчанию используется классом Scanner)

Я пробовал в разных версиях API на эмуляторах, и это работает, похоже, не связано с версией Android.

Но в некоторых физических устройствах это не так,где он работает, самые последние, которые у меня есть (Samsung S8 +, S8 note ...)

Как можно, чтобы это перестало работать без каких-либо изменений ?, буквально оно работало в конце вторникаи не работает в начале среды и только на некоторых устройствах без видимой связи с версией Android.

Я действительно потерян с этим, похоже на какую-то черную магию, и я надеюсь, что смогунайти причину ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...