jsp获取参数和读取文件的中文乱码有关问题

jsp获取参数和读取文件的中文乱码问题

这个问题是从使用request获取参数和FileInputStream读取文件产生的,于是我根据从网络上自己的经验和相关资料,对乱码问题重新做了一下总结:

1JSP与页面参数之间的乱码
       JSP
获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")request.setCharacterEncoding("gb2312")

如果在JSP将变量输出到页面时出现了乱码,可以通过设置

response.setContentType("text/html;charset=GBK")

response.setContentType("text/html;charset=gb2312")解决。

2Java与数据库之间的乱码
      
大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicodeMicrosoftSQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如mmmysql驱动:jdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding=GBK

3Java与文件/流之间的乱码
       Java
读写文件最常用的类是FileInputStream/FileOutputStreamFileReader/FileWriter。其中FileInputStreamFileOutputStream是基于字节流的,常用于读写二进制文件。读写字符文件建议使用基于字符的FileReaderFileWriter,省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现码。 在这种情况下,建议使用FileReaderFileWriter的父类:InputStreamReader/OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset cs) OutputStreamWriter(OutputStream out, Charset cs)