我一直在使用一个读取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版本没有明显关系的设备中工作。
我真的迷失了它,看起来像某种黑魔法,我希望我能够找到原因...