文档介绍:中文乱码问题 1、原因 2、解决办法原因?了解中文字符的 URL 编码?浏览器怎样进行 URL 编码? getCharacterEncoding 方法? setCharacterEncoding 方法? getParameter 方法的中文问题 http://dx. ?对Java 中的某个字符串进行 URL 编码,其实是在对它的某种字符集编码(非 Unicode 码) 数据进行 URL 编码,而 Java 中的字符串是以 Unicode 字符集编码存在的,所以,在对 Java 中的字符串进行 URL 编码时,必须指定是对这个字符串的哪种非 Unicode 的字符集编码进行 URL 编码。了解中文字符的 URL 编码 JDK 包中有两个类: URLEncoder 和URLDecoder ,URLEncoder 类中定义了一个encode 静态方法来完成 URL 编码, URLDecoder 类中定义了一个 decode 静态方法来完成 URL 解码。浏览器怎样进行 URL 编码?浏览器对 FORM 表单中输入的中文字符都会进行 URL 编码后再传送给 WEB 服务器。?对于页面中的 FORM 表单中输入的内容,浏览器将按照当前显示页面时所采用的字符集编码来进行 URL 编码。与请求参数的字符集编码相关的方法? getCharacterEncoding 方法? setCharacterEncoding 方法 getParameter 方法的中文问题?getParameter 等方法在读取的参数信息时,需要进行URL 解码。?对于 HTTP 请求消息的请求行中的 URL 地址后的参数, getParameter 等方法进行 URL 解码时所采用的字符集编码在 Servlet 规范中没有明确规定 Tomcat 中的 ServletRequest 对象的 getParameter 等方法默认采用ISO8859-1 字符集编码进行 URL 解码,因此无法返回正确的中文参数信息。?对于 POST 方式下的“application/x-- urlencoded ”编码格式的实体内容, getParameter 等方法以 ServletRequest 对象的 getCharacterEncoding ()方法返回的字符集编码对其进行 URL ?getCharacterEncoding ()方法的返回值通常为 null ,对于这种情况, ServletRequest 对象的 getParameter 等方法将使用默认的 ISO8859-1 字符集编码对实体内容中的参数进行 URL 解码,因此也将无法返回正确的中文参数信息。?ServletRequest 接口中定义了一个 setCharacterEncoding 方法来设置请求消息中的实体内容的字符集编码名称, getParameter 方法将以该方法设置的字符集编码对实体内容进行 URL 解码。?setCharacterEncoding 方法设置的是请求消息中的实体内容的字符集编码名称,它只影响 getParameter 方法对 POST 方式下的“application/x-ded ”编码格式的实体内容进行 URL 解码的结果, 而不能影响 getParameter 方法对 HTTP 请求消息的请求行中的 URL 地址后的参数进行 URL 解码的结果。解决办法(统一编码) ? 1. 网页页面使用 utf-8 <meta http-equiv="Content-type" content="text/html; charset =utf-8"> 2. ajax 默认使用 utf-8 传输数据, 但最好使用 post, 不要使用 get 3. 数据库也要使用 utf-8, 在建表时设置好. http:// /charset_tips