今日从服务器上获取txt文件显示,因为内容是中文,所以出现了乱码,编码问题嘛,随便搞搞。但是怎么的都不行,最后去比较每个字节。发现服务器TXT文件编码为UTF-8。app端也是用UTF-8来解析,没毛病,为啥就显示乱码呢。
也算是重温了下基础,分别将服务器端的返回。分别用getBytes("UTF-8")和getBytes("GBK")。发现返回的字节数组长度还不同。隐约发现了问题。返回的字节数组都有丢失,怎么可能能正常显示呢。比较了服务器的原始返回和getBytes()已经完全不一样了。最终在Vollery的StringRequest中的parseCharset中发现。如果没有发现服务器字符集配置。默认返回ISO-8859-1。坑爹呢。不亏是老外写的代码,默认为啥不返回UTF-8呢。用ISO-8859-1的String.getBytes("UTF-8")。肯定无法还原原始数据。所以对于想要在字节数组和String之间相互转换并且没有损失。就得以什么编码生成String的,就以什么编码getBytes.这样就能获得原始的字节数组了。然后就可以用正确的编码来显示了。