jsp读取数据库中文乱码问题
jsp读取数据库中文乱码问题
这个问题是从项目中设计数据库和操作数据库的人不同而造成的。
所用的数据库
是sybase,设计时把数据类型设计为nvarchar了,如果是中文,读取出来就会得到乱码。
我试了好多方法还是不行,最后无奈,只好将数据类型改为varchar了。
所以在此总结一下中文乱码问题。
一、JSP与页面参数之间的乱码
JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码
类型和系统默认的编码类型不一致,很可能就会出现乱码。
解决这类乱码问题的
基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")或request.setCharacterEncoding
("gb2312")。
如果在JSP将变量输出到页面时出现了乱码,可以通过设置
response.setContentType("text/html;charset=GBK")或
response.setContentType("text/html;charset=gb2312")解决。
二、Java与数据库之间的乱码
大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的
乱码问题比较明智的方式是直接使用unicode编码与数据库交互。
很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。
其他大部分数据库驱动,可以在驱动的url参数中指定,如如mm的mysql驱动:
jdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding=GBK。
三、Java与文件/流之间的乱码
Java读写文件最常用的类是FileInputStream/FileOutputStream和FileReader/FileWriter。
其中FileInputStream和FileOutputStream是基于字节
流的,常用于读写二进制文件。
读写字符文件建议使用基于字符的FileReader和
FileWriter,省去了字节与字符之间的转换。
但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现码。
在这种情况下,建议使用FileReader和FileWriter的父类:
InputStreamReader/OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。
jsp页面传值中文乱码 网页乱码 jsp过滤器过滤乱码等乱码处理办法
一、jsp页面间传值中文乱码问题解决办法<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <form action="b.jsp">name:<input type=text name=name><input type=submit></form>b.jsp页面内容:<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <%String name=request.getParameter("name");%><body><%=name%></body>现象:中文乱码,比如“??????”解决方法如下:方法一:1. 在b.jsp中把pageEncoding="GB2312"改为pageEncoding="ISO885Array-1"虽然这样b.jsp页面显示的内容还是乱码,但是不是那种“??????”的乱码,而是一些特殊字符2. 然后在浏览器中查看菜单中修改成GB2312的编码,这时乱码就显示中文了。
3. 但是这种方法是不可行的。
方法二:( 已经验证可行)1. 在b.jsp中把String name=request.getParameter("name");修改为String name=new String(request.getParameter("name").getBytes("ISO-885 Array-1"),"GB2312");2. 这时再在页面上显示,则就是中文了。
中文乱码问题
数据库以及JSP页面乱码问题的处理博客分类:数据库.数据库中和JSP页面中中文显示乱码问题,纠结了我很久。
令我兴奋的是,现在已经解决了。
刚开始测试时,因为我是在MySQL那个黑框框里面中插入中文数据的,所以没有出现乱码。
然而,当我用JSP页面去测试时,情况就不同了。
我编写的JSP页面的功能很简单,当输入的用户名和密码都正确时,则将数据库中所以用户的信息用表格显示出来,反之,则提示出错信息。
刚开始,我没测试向数据库中插入数据,而是用户名和密码登录,当我输入中文时,到数据库中查找时,查找成功了,但是显示到JSP页面上的信息却是乱码。
当时,我觉得很奇怪,数据库中有该用户名,而且查找也成功了,为什么显示的却是乱码。
然后,我就在向数据库中查询用户名和密码的方法中,打印了提交的用户名和密码,控制台输出的却是乱码。
于是,我就想:提交的是乱码为什么能与数据库中显示的不是乱码的中文能够匹配,觉得可能是数据库中的字符编码有问题?后面,我在Servlet类里添加了一条语句:Java代码1.request.setCharacterEncoding("gbk");request.setCharacterEncoding("gbk"); 页面显示时,却提示出错信息:“帐号或密码错误”,而控制台打印的信息不是乱码。
这样,我就更加肯定是数据库中的字符集有问题了。
于是,我将MySQL安装目录下的文件my.ini中的Java代码1.default-character-set=latin1default-character-set=latin1 改为了Java代码1.default-character-set=gbkdefault-character-set=gbk测试之后,还是乱码。
然后,我就想测试下:JSP提交的信息插入到数据库中,是否会出现乱码。
(都是针对输入中文而言)。
果不其然,插到数据库中的信息全是乱码,而且之前在MySQL 平台下输入的中文字符也变成了乱码,害得我又将其改回去了。
JSP+MySQL中文乱码问题post提交乱码解决方案
JSP+MySQL中⽂乱码问题post提交乱码解决⽅案写了两个jsp页⾯index.jsp和mysql_insert.jsp。
数据处理流程为:在浏览器(chrome)上访问index.jsp后在其表单上输⼊数据,提交⾄mysql_insert.jsp,mysql_insert.jsp⾸先将接收到的数据按变量存⼊MySQL的html_db数据库的person_tb中(该表原有部分数据),然后mysql_insert.jsp再拿出该表中所有数据显⽰在mysql_insert.jsp页⾯上。
现在发现,当提交的数据中含有中⽂(⽐如变量姓名的值为中⽂)时,mysql_insert.jsp页⾯上显⽰新增的那条记录中的相应中⽂(姓名的值)乱码,其他数据都显⽰正常,查看数据库,发现也是相应的含有中⽂的变量值(姓名的值)乱码。
乱码情况如下图:index.jsp中第⼀⾏有语句:<%@ page contentType="text/html;charset=gb2312"%> ,在浏览器(chrome)中访问此页⾯时⽆乱码(主要指中⽂乱码,英⽂乱码现象还没遇见过)。
(试过将gb2312换成utf-8,访问后中⽂乱码)mysql_insert.jsp中第⼀⾏有语句:<%@page language="java" pageEncoding="UTF-8"%>,在浏览器中直接访问此页⾯时⽆乱码。
mysql_insert.jsp页⾯的代码如下:复制代码代码如下:<%@page language="java" pageEncoding="UTF-8"%><%@ page import="java.sql.*" %><HTML><HEAD><TITLE>add message into table </TITLE></HEAD><BODY><%String id=request.getParameter("id"); //从表单获得String name=request.getParameter("name"); //从表单获得String sex=request.getParameter("sex"); //从表单获得String age=request.getParameter("age"); //从表单获得try{/** 连接数据库参数 **/String driverName = "com.mysql.jdbc.Driver"; //驱动名称String DBUser = "root"; //mysql⽤户名String DBPasswd = "123456"; //mysql密码String DBName = "html_db"; //数据库名String connUrl = "jdbc:mysql://localhost/" + DBName + "?user=" + DBUser + "&password=" + DBPasswd;Class.forName(driverName).newInstance();Connection conn = DriverManager.getConnection(connUrl);Statement stmt = conn.createStatement();stmt.executeQuery("SET NAMES UTF8");String insert_sql = "insert into person_tb values('" + id + "','" + name + "','" + sex + "','" + age + "')";String query_sql = "select * from person_tb";try {stmt.execute(insert_sql);}catch(Exception e) {e.printStackTrace();}try {ResultSet rs = stmt.executeQuery(query_sql);while(rs.next()) {%>ID:<%=rs.getString("id")%> </br>姓名:<%=rs.getString("name")%> </br>性别:<%=rs.getString("sex")%> </br>年龄:<%=rs.getString("age")%> </br> </br><%}}catch(Exception e) {e.printStackTrace();}//rs.close();stmt.close();conn.close();}catch (Exception e) {e.printStackTrace();}%></body></html>我的数据库设置的是全部使⽤UTF-8编码,如下图:我的虚拟⽬录下的web.xml内容如下:tomcat/conf⽬录下的server.xml⽂件的内容如下:复制代码代码如下:<U><?xml version='1.0' encoding='utf-8'?></U><Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="erDatabase"description="User database that can be updated and saved"factory="ers.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="erDatabaseRealm" resourceName="UserDatabase"/></Realm><Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host></Engine></Service></Server>tomcat/conf⽬录下web.xml⽂件的主要内容如下:复制代码代码如下:<U><?xml version="1.0" encoding="UTF-8"?></U><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet><servlet-name>jsp</servlet-name><servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class><init-param><param-name>fork</param-name><param-value>false</param-value></init-param><init-param><param-name>xpoweredBy</param-name><param-value>false</param-value></init-param><load-on-startup>3</load-on-startup></servlet><servlet-mapping><servlet-name>default</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- The mappings for the JSP servlet --><servlet-mapping><servlet-name>jsp</servlet-name><url-pattern>*.jsp</url-pattern><url-pattern>*.jspx</url-pattern></servlet-mapping><session-config><session-timeout>30</session-timeout></session-config><此处省略了mime-mapping的内容><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>现在我能想到的设置编码的地⽅也就只有这么多了,其他还有哪⾥需要设置编码?恳求指导。
JSP中文乱码问题及解决方法
中文 乱 码 问题 。原 因主 要有 两点 .第 一是 J P文件 和 文 变成 乱码 。 决方 法如 下 : S 解 在数 据库 连接 字符 串 中插 入 数 据 时 加 入 编码 字 符 集 Sr gU l " b : le e: tn r j c qsr r/ i = d s v / Jv aa本身 编译 时产 生的乱 码 问题 。第 二是 Jv aa程序 与
<fl r / t > i e
< itr ma p n > fl - p i g e
< h r a > i f e-n me
< r—p t r > * u l p t m> u l a t n / < r- a t e / e
文乱 码 的问题 。 能一 直 困扰 着 大家 。 可 那是 什 么原 因会
程 中 。 用 的编码 方式 与源 文件 的编码 方式 不 相 同 . 使 就 会 出现 中文 乱码
rso s. to t tye” x hr ; astG K” ep ne eC ne T p (t t tl hre= B ) s n e / ac ;
"B ) G K”;
3 . 数据库 中读取 的数 据是乱码 4从 3 常见 中文 问题及 其解 决方 法 、 当从 数 据 库 里 的 表 读 取 数 据 时 发 现 读 到 的 是 乱 J P动 态 网站开 发 中 。 S 出现 中文乱 码 主要 可 以分为 码 . 是 因为 数据 类 型是 vrh r和 t t 型造 成 中文 那 aca e 类 x 以下 4种 情 况 :S J P页面 显示 的 乱码 . 单 提 交 的 中文 乱码 . 到这种 问题 可 以用 如下 方法 解决 : 果是 v r 表 遇 如 a- 是 乱码 , 据库 连接 出现乱 码 。 数 从数 据 库 中读 取 的数据 ca 类 型 可把 它 设 为 bnr hr iay属 性 就 可 以解 决 中文 问 是 乱码 。 题 。 果是 t t 型 就要 用个 编码 转换 类来 处 理 , 如 e 类 x 方法 31 S . J P页 面里 的中文 内容显 示乱码 如下所 示 : 当 J P页 面 里 输 出 的 中 文 内 容 为 乱 码 。 原 因是 S p bi casC n etA o B I ul l ovr tB c s A
JSP中汉字编码时出现“乱码”的情况及具体解决方案
l4 1
F。 RTu E w 。 R D 。1 。
、 一
关键 词 : J ; S 汉字编 P 码;乱码 问 ; 题 解决
、
集 是几 乎所 有的 中 文 系统和 国际 化 的软 件都 时 ,可以先用数据库 管理系统提供的管理功能 支 持的 中 文字符 集 ,这 也是 最 基本 的 中文字 检查其中的中文数据是否正确。 符集。其编码范 围是高位0 1 0 e xa xf ,低位也 四 J 服务器对中文的支持程度 SP 是 O a l xe x l_ f;汉字从 O b a _ 0 x 0 l开始,结 束于 支 持 J 的 服 务 器 有 很 多 ,这 些 服 务 器 对 SP 0 7 e; xf f 中文的支持 度 又各不相同 ,例如RE N,其 SI G BK 是 GB 3 2 0 的扩 展,是 向 兼 对中文的 支持程度相当的好,而T0MC 对 2 1 8 AT 容的。它包含了 2 9 2个汉字,其 编码范 围是 中文的支持程 度一般。所以 ,在J 编程过程 00 SP 0 8 4 - xe x 10一 f ̄,剔除高位 0 8 的字位。其所 中,要注意J P E 0 x0 S  ̄ 务器对中文的支持程度。 有字符郜 町以一对 一 映射到 Uncd .。 i e2 0 o 找 到 r乱码产生的原因 ,我们在实际编程 GBl0 0 0 0GBK2 8 3 2 0 ( K)在 GBK 的基 过 程中只要综合应用编 程方法 ,就可以解决乱 础 上进 步扩展 _ 宁 ,增加 了藏 、蒙等少数 码的 问题 。 『 汉 民族的宁形。GB 2 从根本上解决 了字位不 K K 实例分析 够 ,宁 形不足的 问题 。它并没有确定所 有的字 下面 以 ・ 个具体的例子来 分析J P S 中乱 码 也 就 足 所 峭的 圈际 化 (lN) 。 各 种 语 言信 启、 形 ,只是规定 了编码 范围 ,留待以 后扩 充。编 解 决 的 方 法 。 【8 BK 兼容 ;四 测 试 平 台 l : 被进一步规 范为 L c l 信息 。处理的底层字 码是变 的 ,其二字节部分与 G o ae ND 20 T MYS 4 QL 字节部 分是扩宽的字形 、字位 ,其编码 范围是 W I OW ¥ 0 0} OM CAT{ 符集变成 了几 包含 了所有字形的 Unc d 。 i e o x l xf 、 l I x 0 0 3 、三 字 测 酞 平 台 2 : 现在大部分具 有 国际化特征 的软件核心t= 首字 节 0 8 O e ¨字 节O 3 x 9 } 节 0 8一0 f、四字 节0 3 — x 9 x i xe x 0 0 3。 W I OW S 0 0 RE I M Y Q 4 ND 2 0 + S N+ S L 符处理都足以 Un c d 为基础的 , 软件运 i e o 所 以 在J P , 管是 从 Uni O e 中 S c d 住 测 试 台 l 无论 怎么 设 置数 据 库 的 下 行时根据 当时的 L cl/ n / o e a e设置 oae I g C d p g a t 编码还是Byt >Un C de 存在问 c c di. 以及 网页的编码 ,都无法 正常显示 e iO 都 n o Ig n 确定桐应的本地字 符编码 设置 ,井依此 处理本 >BY e io e ye { l 台2F,只要 设置M YsQL 地 宁倚 。i处理过程中需要 实现 U io e 和 题 。从Un c d 转为B t ,如果 目标代码集不 f文 ,而 测 吠、 芏 ncd x3 。这 的e od ng,就 町以正常 示中文 。如 果在 nc i 本地宁 ? =的相 互转换 ,甚或以 Un c d 为 存 存对 应的 代码 ,则得 到的 结 果是 0 f _策 1 : io e 32 下需要 示 【 文 ,那 么除 了要 设置 } 1 中f 的两个 不同本地 字?= u 】 = 1 集的相互转换 。这种 是 因为GB2 l 符号 区中的一 些符 号被映 射到 测试 平台 1 些公 共的 符 号编 码 , 由于这 些 符号 出现 任 MY QIt cd, S %n o ig,对数据 库的读写要进行转 1 1 方式 网络环境 i v 被进一 步延伸 ,任 何网络两 S 89 或其它S S BC 字符集中 ,故它们征 换 ,转换代吗如 : 端 的宁衍信息也需要 根据 字符集的设 置睾 换成 I O 8 5 l 专 Un c d 中编码比较 靠前 ,有一 些其有效 位只 /o e p bi tig u l S r Ch n e d (tig s c n a g Co eS rn t) r 可接受的内容。 c pto 位 hr w OEx e i n J v 语 占内部 是用 Un c d 表 示宁符 仃8 ,和汉 字的 编码 莺叠 ,导 致 显示 乱码 。 t o s I aa io e ye i e o ye 的 ,遵守 Unc d V . 。J v 程序无论是 从B t转 为Unc d , 如果B t标识的字符在 io e 2 0 a a rt n c em’ n w S rn (t. eBye (io ti gsrg t ts” s x fd 从 / 丈件 系 统 以 宁 符 流 读 /写 文 件 ,还 是 往 源代码集 不存 ,则得到的结果是O f f ,同 往 8 5 l ) BK” ; 89 ¨, G ) 样存在编码 问题 。 URL 连接 ITMI j I 信息 ,或从 URL 连接 实际编程中 ,J P S r l 程序得到错误 S / e ve t 读取 参数值 ,都会有字符 编码的转换 。这 样做 N d I 题斛决 ! LS ̄ J 虽然增加 r 编程的复 杂度 ,容易引起混淆 ,但 的汉中信息 ,往往是这 两个过程的叠加 ,有时 甚 至是两个过程 叠加后 反复作用的结果 。 JP s 中汉宁编码时 “ 乱码”的问题一直是 却是符合 际化的思想的 。 三 、数据库 自身编码的方式。 JP S 中编 程值得注意的 问题 ,解决的方案也 有 从理论 来说 ,这些根据宁符集设 置而进 在J 编程过 程 【 ,不可避 免要和数据库 很多 。通常需要 考虑的就是从以上三 个方 面找 P s { l 行的卞 符转换 不应 该产生太 多问题 。而事 实是 S q 对症 下药 。 J P 的中文 s 由l F 成用程竹: 的实际运行环境 不【 ,uniO 打 交道 。所 以数据库 自身的编码 方式对J P , 到乱码产 生的原 , 百 I C de 中文的显示起 着决定性 作片。如果在 中文在 写 e c dn 并没有想像中那么复杂,在编程过程 1 n o ig 和 各个本地字符集的 补充、完善 ,以及 系统 或 n 应 用程序 寅现的不规范 ,转码时 出现的问题时 入数据库过程 中 已是乱码 ,那显示的数据毫无 中只要注意卡 是问题就 町避免问题现象的出现 。 交换用的字符编码集 ,如美国的 A C I S I ,中国 的 GB 3 2 8 ,日本的 J 等 ,作 为该 家/ 2 1~ 0 I S 区域 内信启、 处理的基 础,有着统一编码 的重 要 作用。字符编码集按长 度分 为 S BCS ( 字节 字 符集 ) ,DBCS ( 字节字符集 )两 人类。 双 早期的软 什 ( 尤其是操作 系统) ,为 了解决 本 地 符 信息 的计算机处理 ,出 了各种本地 化 版奉 (JO IlN),为 了区分 ,引进 了 LANG, C d p g 等概念 。但是 山于各个本地 字符集 oea e 代码范 围圣毳 ,相 互问信息 交换 困难 ;软件 各 个本地化版本 独立维护成本较 高。因此有必 要 将 本地 化工 怍中 的共性 抽 取 出来 ,作 一 处 致 理 ,将特 州的 本地 化处理内容降低 到最少。这
jsp页面传值中文乱码问题解决
JSP中文乱码种类
1.JSP文件中文内容显示乱码
2.调用Servlet显示乱码
3.Post表单乱码
4.Get参数乱码
5.存取数据库乱码
1
•通过浏览器调用JSP页面,在客户端浏览器中所有的中文内容出现乱码
•解决方案:替换ISO-8859-1,修改页面编码为UTF-8
调用Servlet显示乱码
•通过浏览器调用Servlet,Servlet在浏览器中显示内容出现乱码
调用Servlet显示乱码
•解决方案:在Servlet使用response在输出内容之前,先执行response.setContentType("text/html;charset=UTF-8")设定输出内容的编码为UTF-8
Post表单乱码
•提交页面表单元素给对应的JSP页面或者Servelt后,接收方出现表单数据中文值乱码
Post表单乱码
•解决方案:在接收POST提交的参数之前,使用request.setCharacterEncoding(“UTF-8")设定接收参数的内容使用UTF-8编码
Get查询字符串乱码
•用Get方式传递参数,中文字符会出现乱码
ISO8859_1ISO8859_1gb2312gb2312
客户端通过GET 提交中文编码问题简单流程:
假如:
客户端和服务器用gb2312
HTTP 传输编码用ISO8859_1
则:
服务器需要指示客户端文档的编码方式
Get查询字符串乱码
•解决方案:Get提交默认是以ISO88591传递,如果容器没有做配置修改,程序则需要手工进行编码转换
存取数据库乱码
•解决方案:在数据库连接参数中设置编码值。
如何解决乱码问题总结
</filter-mapping>
3.URL中的中文问题
对于直接通过在URL中传递中文参数,如“http://localhost/a.jsp?str=中文”这样的get请求,在服务端用request.getParameter("name")时返回的往往是乱码。按以上的做法设置Filter没有用,用request.setCharacterEncoding("gbk")的方式,仍然不管用。
httpServletResponse.setContentType("text/html;charset=gbk")),最好同时在JSP页面的head部分加上<meta http-equiv="Content-Type" content="text/html;charset=gbk">
·在每次要输出中文的地方主动转换编码方式,比如要在页面中输入“中文”二字,就可以用以下方式:
<%
String str="中文";
byte[] tmpbyte=str.getBtyes("ISO-8859-1");
str=new String(tmpbyte);
out.print(str);
%>
2.获取表单提交的数据时的中文乱码问题
%>
<html>
<head>
<title>中文Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
JSP中文乱码问题及解决方法
电 脑 学 习
第6 期
JP中文乱码 问题及解 决方法 S
贾素 来 ’
摘 要 :在简要介绍常用字符集的基础上给出了JP中文乱码问题的原因 。 S 并给出了相 应的解决方法 。
关键 词 : JP S Srl ev t e 中文 乱 码 字符 集
以被 正确 地 处 理 , 码 如 下 : 代
Sr g n me r q et e a a tr " sma t n a = e u s g t rme (u e me ) i . P e Sr g n me = e t n n m .e ye "S - 8 9 1 ) ” B t n a 2 n w Sr g( a eg t t i i B s(I O 8 5 - . K ) G
2 J P中文 乱码 的解 决方 法 S
21JP源 文 件 在 编 译 过 程 中 的编 码 转 换 . S
() 3 配置 t ct o a 解决中文乱码 问题。表单如 果 以 ps m ot
方 式 提 交 中 文 参 数 , 以 使 用 ft 解 决 中文 乱 码 问题 。 在 可 ie lr
<%@p g c ne ty e ”e V t ;h re=G a e o tntp = tx hmlc as t BK" %>
最后在项 目的 w bx l e . 文件 中添加如下几行代码 : m
< l r fh r n me S t aa tr ed n  ̄f e-n m> i e f t >< ie - a > eCh r ceEn o ig dtr a ' < h r cas d esS t aa tr cd n Fle<fhe-ea s i f e - ls>ftr.eCh rceEn o ig i r/i r ls > t
JSP中文乱码问题解决办法
JSP中文乱码问题解决办法当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊处理。
常见的几种字符集编码:⏹ASCII码:不支持中文⏹ISO-8859-1:不支持中文⏹GB2313、GBK:支持中文⏹Unicode:支持中文⏹UTF-8:支持中文在解决JSP中文乱码问题前,弄清以下几点:(1) windows平台采用的默认字符集编码是:GBK(2) IE浏览器默认采用UTF-8字符集编码方式发送Http请求。
(3) Tomcat在处理Get请求时,永远采用ISO-8859-1编码;Tomcat在处理Post请求时,默认采用ISO-8859-1编码;如果进行了如下设置request.setCharacterEncoding(“GBK”),则采用GBK编码。
可以使用如下几种方式解决JSP中文乱码问题。
1、方法一:调用自定义的转换函数<%@page contentType="text/html;charset=GB2312"%><%!public String getStr(String s) {String str = s;try {byte[] b = str.getBytes("ISO-8859-1");str = new String(b);return str;} catch (Exception e) {return str;}}%>使用内置对象request将获取的数据,使用ISO-8859-1进行重新编码,并保存到一个字节数组中,然后调用new String()方法,以GBK方式将这个字节数组构造出一个新的字符串,这个新的字符串就是我们想要的结果。
适用于以下三种情况:(1) 以Get方式提交表单,提交的数据中包含汉字字符。
(2) 以Post方式提交表单,提交的数据中包含汉字字符。
中文乱码
4.创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码
5.用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码.
如用户输入资料的JSP页面是big5码, 显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码
要解决JSP乱码,首先就要了解JSP乱码的原因
1.架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码
2.在PHPMYADMIN或mysql-front等系统 创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码
我们一一来表达:
1.如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题
2.修改数据库编码,如果是数据库编码不正确: 可以在phpmyadmin 执行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将test数据库的编码设为utf8
3.修改表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将一个表category的编码改为utf8
4.修改字段的编码:
ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
