事情是这样的: 想把一个文件的内容通过jsp在网页上显示,却发现出现乱码,开始以为是代码问题,改了多次还是不行。
于是 我在普通的java类中运行该程序,发现他是可以运行的。部分代码如下。
BufferedReader br = null;
try
{//对应文件目录
br = new BufferedReader(new FileReader(path));
String connection = br.readLine();
while (connection != null) {
System.out.println(connection);
connection = br.readLine();
}
} catch (IOException e)
{
e.printStackTrace();
}
发现他是可以正确运行的,会正确显示文本信息。
但是在网页中其结果如下:
法一:字符转码(失败)
在代码中添加:
connection=new String(connection.getBytes("ISO-8859-1"),"utf-8");
但其结果为:
法二:
添加代码:
br = new BufferedReader(
new InputStreamReader(new FileInputStream(path),"utf-8"));
运行结果:
好啦 到这里问题就得到解决啦!!!
在这里普及一点关于文件操作的知识点:
缓冲字节流:BufferedInputStream/BufferedOutputStream
缓冲流是一种字节流文件,(BufferedReader/BufferedWriter与此类似,是字符流文件)。通过把内存缓冲区连到输入输出而扩展一个过滤流,该缓冲区允许java对多个字节同时进行输入输出,可以减少硬盘访问次数,提高性能和效率。
字符输入/输出流类InputStreamReader和OutputStreamWriter.
InputStreamReader是字节流通向字符流的桥梁,使用指定的charset类的对象读取字节并解码为字符。
OutputStreamWriter.是字符流通向字节流的桥梁,使用指定的charset类的对象读取字符并解码为字节。
可以对输入流InputStream和输出流OutputStream进行字符处理,在这里需要用到这个,用来处理网页的编码形式。
具体用法:
//创建使用给定字符集的InputStreamReader
InputStreamReader(InputStream in,Charset cs):