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+"
");
}
//测试: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+"
");
}
//测试: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();
}