java 字节流读取汉字 和 字母的问题
用FileInputStream读取文件时,是一个一个字节读取的,如果说因为汉字是两个字节,读取时会显示为?,那字母应该也是两个字节吧,都是unicode编码,为什么字母...
用FileInputStream读取文件时,是一个一个字节读取的,如果说因为汉字是两个字节,读取时会显示为?,那字母应该也是两个字节吧,都是unicode编码,为什么字母就可以正常显示
展开
展开全部
java乱码问题是比较多见。
整个环节中只要有一项有问题,就会产生乱码。
1、读取的文件采用的编码。
2、jvm所使用的编码。这个要看你所使用的OS和版本,jvm会使用OS中设定的默认编码。比如你使用英文版的winxp,jvm在处理流的时候就会默认采用cp什么什么的编码。
3、如果你使用了中间件,比如tomcat这样的web server,在request和response中,tomcat会自动使用ISO-8859-1编码。
4、如果有数据库数据交换,数据库中使用的编码。
你确认所有的环节用得都是同一种编码,就可以解决乱码问题了。
如果不是相同编码,那就做转码处理。
转码例句:
String s2 = new String(s1.getBytes("UTF-8"), "ISO8859_1");
整个环节中只要有一项有问题,就会产生乱码。
1、读取的文件采用的编码。
2、jvm所使用的编码。这个要看你所使用的OS和版本,jvm会使用OS中设定的默认编码。比如你使用英文版的winxp,jvm在处理流的时候就会默认采用cp什么什么的编码。
3、如果你使用了中间件,比如tomcat这样的web server,在request和response中,tomcat会自动使用ISO-8859-1编码。
4、如果有数据库数据交换,数据库中使用的编码。
你确认所有的环节用得都是同一种编码,就可以解决乱码问题了。
如果不是相同编码,那就做转码处理。
转码例句:
String s2 = new String(s1.getBytes("UTF-8"), "ISO8859_1");
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询