关于我对JSP乱码的解决方法,希望对大家有帮助
首先我是统一用UTF-8的编码
Mysql连接字符
jdbc:mysql://YourMySqlServerIp:Port/YourDBName?
autoReconnect=true&;useUnicode=true&;characterEncoding=UTF8"......
解决my
sql数据库乱码
数据库使用UTF8
jsp文件必须用utf-8编辑保存
<%@pagecontentType="text/html;charset=UTF-8"....
<%@pagepageEncoding="UTF-8"%>
<%response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");%>
若使用了usebean或标签还要用
tomcat的自带的encodeFilter来编码请求为UTF-8
ajax里的get需要用JS的encodeURIComponent()编码中文为UTF-8
若为post传值可用JS编码中文为UTF-8
XmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');
设置POSTAJAX用UTF-8编码
在servlet和javabean编译时记得用javac-encodingUTF-8-source1.5-target1.5*.java
java文件保存为UTF-8格式
servlet里用
response.reset();
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");
上传用new String(m_binArray,m_startData,(m_endData-m_startData)+1,m_Charset);设置转码
tomcat默认不处理utf-8所以必须在
server.xml里的连接里设置编码
port="80"protocol="HTTP/1.1"
connectionTimeout="30000"
redirectPort="8443" URIEncoding="UTF-8"/>
这样tomcat就能像resin一样使用UTF-8
若不添加设置URIEncoding="UTF-8"则需要使用new String(request.getParameter("cnParam").getBytes("ISO8859-1"),"UTF-8")
转换为utf8编码,若为post,可以不需要转码,但一定要注意form post 表单所在页面一定要是utf-8格式
RESIN不用设置即可接受UTF-8
建议使用UTF-8编码URL或Get中文传值
jsp编码函数类
java.net.URLDecoder.decode(String ChinaUTF-8,String EncodeCharset);解码
java.net.URLEncoder.encode(String ChinaChar,String EncoderCharset);编码
1, 针对直接在console上运行的类
对于这种情况,我们建议在程序编写时,如果需要从用户端接收用户的可能含有中文的输入或含有中文的输出,程序中应该采用字符流来处理输入和输出,具体来说,应用以下面向字符型节点流类型:
对文件:FileReader,FileWrieter
其字节型节点流类型为:FileInputStream,FileOutputStream
对内存(数组):CharArrayReader,CharArrayWriter
其字节型节点流类型为:ByteArrayInputStream,ByteArrayOutputStream
对内存(字符串):StringReader,StringWriter
对管道:PipedReader,PipedWriter
其字节型节点流类型为:PipedInputStream,PipedOutputStream
同时,应该用以下面向字符型处理流来处理输入和输出:
BufferedWriter,BufferedReader
其字节型的处理流为:BufferedInputeStream,BufferedOutputStream
InputStreamReader,OutputStreamWriter
其字节型的处理流为:DataInputStream,DataOutputStream
其中InputStreamReader和InputStreamWriter用于将字节流按照指定的字符编码集转换到字符流,
如:
InputStreamReader in = new InputStreamReader(System.in,"GB2312");
OutputStreamWriter out = new OutputStreamWriter (System.out,"GB2312");
例如:采用如下的示例JAVA编码就达到了要求:
//Read.java
import java.io.*;
public class Read {
public static void main(String[] args) throws IOException {
String str = " 中文测试,这是内部硬编码的串"+" test english character";
String strin= "";
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in,"gb2312")); //设置输入接口按中文编码
BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out,"gb2312")); //设置输出接口按中文编码
stdout.write("请输入:");
stdout.flush();
strin =