今天使用Bufferedrader ,单缓冲区的数据读取时出现的中文乱码的问题
1.使用这种方式可能出现的中文乱码代码:
/** * 第三套********:使用BufferReader,单缓冲区的数据读取和写入(字符输入流) * 读取 */ FileReader frFileReader = null; BufferedReader bWriter = null; try { frFileReader = new FileReader("D:NIO.txt"); bWriter = new BufferedReader(frFileReader); //读取一行数据 String Line = bWriter.readLine(); while(Line!=null){ System.out.println(Line); Line=bWriter.readLine(); } } catch (Exception e) { e.printStackTrace(); }finally { try { bWriter.close(); frFileReader.close(); } catch (Exception e2) { e2.printStackTrace(); } }
2.实际出现中文乱码的代码:
BufferedReader br=null; FileReader fr=null; try { //在这里我遇到了中文问号乱码的问题 fr = new FileReader(upPath); br = new BufferedReader(fr); String line; String fictionContent = new String(); while((line=bufr.readLine())!=null){ //将读取到一行一行数据使用concat方法连接起来 fictionContent = fictionContent.concat(line+"\r\n"); } //测试:System.out.println(fictionContent);这里我做了测试后的代码为乱码 //作为传递小说内容的载体赋值media media.setTxtContents(fictionContent); //标记为上传 media.setIdentity(Identity.UPLOAD); media.setFiction(upFiction); oos.writeObject(media); media = (Media) ois.readObject(); } catch (Exception e) { e.printStackTrace(); }
3.解决方案
BufferedReader br=null; try { //通过文件路径读取到文件内容,然后传给服务器 InputStream in = new FileInputStream(upPath); //将字节流向字符流的转换,utf-8格式也不行 InputStreamReader isr = new InputStreamReader(in,"gbk"); //创建字符流缓冲区 BufferedReader bufr = new BufferedReader(isr);//缓冲 //在这里我遇到了中文问号乱码的问题 //fr = new FileReader(upPath); //br = new BufferedReader(fr); String line; String fictionContent = new String(); while((line=bufr.readLine())!=null){ //将读取到一行一行数据使用concat方法连接起来 fictionContent = fictionContent.concat(line+"\r\n"); } //测试:System.out.println(fictionContent);没有乱码! //作为传递小说内容的载体赋值media media.setTxtContents(fictionContent); //标记为上传 media.setIdentity(Identity.UPLOAD); media.setFiction(upFiction); oos.writeObject(media); media = (Media) ois.readObject(); } catch (Exception e) { e.printStackTrace(); }