`

IO流读取数据个别几个中文字符乱码问题

 
阅读更多
        response.setContentType("text/html;charset=UTF-8"); 
		request.setCharacterEncoding("UTF-8");
//		response.setCharacterEncoding("UTF-8");
		OutputStream os = null;
		InputStream is = null;
		try {
			StringBuilder sb = new StringBuilder("");
			is = request.getInputStream();
			byte[] buffer = new byte[1024];
			while (is.read(buffer) != -1) {
				sb.append(new String(buffer));
			}
			String xml = sb.toString().trim();
                } catch (Exception e) {
			e.printStackTrace();
		}

 上述代码读取的数据量大,且数据中包含中文字符,会出现个别中文字符乱码问题

 

分析原因:
  1. UTF-8是一种针对Unicode的可变长度字符编码,又称万国码。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
  2. 常用中文字符用utf-8编码占用3个字节(大约2万多字),但超大字符集中的更大多数汉字要占4个字节(在unicode编码体系中,U+20000开始有5万多汉字)。英文字符和数字占用1个字节。
  3. 程序中buffer为1024,在这种情况下,就会出现部分汉字只读取部分的情况,汉字的一部分进行重新编码当然会出现乱码的问题
解决方案:
                response.setContentType("text/html;charset=UTF-8"); 
                request.setCharacterEncoding("UTF-8");
//              response.setCharacterEncoding("UTF-8");
                OutputStream os = null;
                InputStream is = null;
                InputStreamReader isr = null;
                BufferedReader br = null;
                try {
                        StringBuilder sb = new StringBuilder("");
                        is = request.getInputStream();
                        isr = new InputStreamReader(is,"UTF-8");
                        br = new BufferedReader(isr);
                        String line = null;
                        while ((line = br.readLine()) != null) {
                             sb.append(line );
                        }
                        String xml = sb.toString().trim();
                } catch (Exception e) {
                    e.printStackTrace();
                }
 
分享到:
评论

相关推荐

    java中文乱码解决问题

    JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的表单数据中有中文字符 在...

    Tomcat和weblogic中文乱码问题解决方案

    Tomcat和WebLogic中文乱码问题解决方案 在 Java Web 开发中,中文乱码问题一直是困扰开发者的主要问题之一。 Tomcat 和 WebLogic 是两个常用的 web 服务器,都是支持 Servlet 和 JSP 的。然而,在使用这些服务器时...

    JAVA IO流文件读写大全下载

    JAVA IO流文件读写,字节流字符流的转换、读取、存盘,不乱码操作,文件移动读取操作,使用了多种流机制

    day019-io笔记和代码.rar

    字节流处理除了文本、文字相关所有的流问题,如,png/jpg/avi/map4/mp3/exe * 2.字符流只处理文本、文字相关(编码乱码问题) * * 1.输入流 abstract class InputStream:这个抽象类是表示输入字节流的所有类...

    JAVA基础知识点,J2SE部分内容

    字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以(使用用字节流来传输字符文件会产生乱码) 注意,不管是哪一种流,在数据传输的底层,还是以字节方式传输。

    android读写中文如何避免乱码详解

    android读取文件中文出现乱码的原因无非就是,读取文件的字符格式与写如文件的格式不一致。因此,避免中文乱码,要在写入文件的时候按照一定的格式写入,读取的时候按照一定的格式读取。这样对应就不会出现乱码。...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例074 将字符串的每个字符进行倒序输出 94 实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 ...

    oracle详解

    进行数据的导入导出时,我们要注意关于字符集的问题。在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。 我们首先需要查看这...

    python支持使用自定义编码的zipfile模块

    而中文操作系统中zip常使用gbk来存储文件列表,这使得使用python解压zip会乱码,需要读取ZipInfo逐个解压文件并且重命名,并且乱码中可能会出现非法字符(? * : " < > \ / | )导致文件解压失败。 这里我在ZipFile的...

    jpivot学习总结.doc

    memberReaderClass 设定一个成员读取器,默认情况下 Hierarchy 都是从关系型数据库里读取的,如果你的数据不在 RDBMS 里面的话,你可以通过自定义一个 member reader 来表现一个 Hierarchy 。 3.5. Level 级别 , ...

    Java学习笔记-个人整理的

    {7.10}缓冲字符输入输出流}{113}{section.7.10} {7.11}文件常用操作}{114}{section.7.11} {7.12}对象序列化}{117}{section.7.12} {8}多线程}{121}{chapter.8} {8.1}线程的常用属性与方法}{121}{section.8.1} {...

Global site tag (gtag.js) - Google Analytics