没有明显原因的文件编码突然出现问题

时间:2018-09-27 15:13:18

标签: android json encoding

我一直在使用一个读取json文件的应用程序工作了几个月。

突然某些设备开始出现故障。 (以前确实在工作过的设备...)

我正在用它来读取json文件(不知道这是否是最好的方式,但正如我所说的,它在所有设备上都能正常工作):

isdigit(*argv[i][0])

在失败的设备中,它读取如下内容:

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

您可以在�符号之间读取一些内容,这些内容看起来像json的内容,但是那里什么也没有...

因此,如果我将其更改为使用UTF-16,如下所示:

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

它开始在该设备上工作,但随后在其他设备上(在未指定任何编码的情况下工作),我得到了这样的信息:

Scanner(inputStream, "UTF-16")

我已经检查了文件(OSX)的编码

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

因此可以确认UTF-8是正确的编码(我相信这是Scanner类使用的默认编码)

我在模拟器上尝试了不同的API版本,并且可以正常工作,似乎与android版本无关。

但是在某些物理设备中却不是,它可以工作的是我拥有的最新设备(三星S8 +,S8 note ...)

这怎么可能在没有任何更改的情况下停止工作?实际上,它是在星期二结束时工作,而不是在星期三开始时工作,并且仅在某些与Android版本没有明显关系的设备中工作。

我真的迷失了它,看起来像某种黑魔法,我希望我能够找到原因...

0 个答案:

没有答案