怎么解决读取txt文件读取时中文乱码问题
Wedding Bus 官方
2024-11-16 13:25:13
最佳回答
从sdcard保存的txt文件读文到android系统中会出现乱码,如何解决这个乱码问网上有解答方法,譬如说利用string temp1 =encodingutils.getstring(strline.getbytes(),"gb2312"); 但并非对所有的情况都适用,解决乱码问题首先要明白为什么会乱码。究其原因,是因为txt文件在win系统上保存时默认为ansi格式,而android目前只支持utf-8编码,因此将txt文件的中文读入android系统中会产生乱码。也有人说直接将txt另存为utf-8编码格式来解决乱码问题,但这种方法指标不治本,不能要求用户手动去更改格式,客户第一嘛。因此还是需要想办法在程序中进行处理。以下做了一些编码格式的测试:测试文本: 122.11196,29.90573,北仑固废厂 测试代码段:reader=new bufferedreader(new filereader(filename));strline=reader.readline() ;string temp1 = encodingutils.getstring(strline.getbytes(),"gb2312");string temp2 = encodingutils.getstring(strline.getbytes("utf-8"),"utf-8");string temp3 = encodingutils.getstring(strline.getbytes(),"utf-8");将文件存成 unicode 格式这种方式能得到非乱码的中文显示,但对于 utf-8 格式下取得的经纬度数字利用double lon = double.parsedouble(lat); 报错 numberformatexception,原因可能是 parsedouble(lat)方法不能处理存成utf-8格式的带标点小数。 将文件 存成 ansi 格式将代码改为:reader = new bufferedreader(new inputstreamreader(new fileinputstream(filename),"gb2312"));strline=reader.readline() ; string temp1 = encodingutils.getstring(strline.getbytes(),"gb2312"); string temp2 = encodingutils.getstring(strline.getbytes("utf-8"),"utf-8"); string temp3 = encodingutils.getstring(strline.getbytes(),"utf-8");即解决了中文乱码问题,又解决了double.parsedouble(lat)报错问题。 20210311