社区
Web 开发
帖子详情
求助:遇到乱码问题
bhwhy
2007-04-28 06:05:31
1,用的mysql数据库5.0,怎莫设置数据库的编码。
2,在程序中如何转换。
查了一下资料,基础比较薄弱,哪位能详细说下。在jsp中,servlet中,数据库中如何转换。有好的文章推荐下。多谢
...全文
331
9
打赏
收藏
求助:遇到乱码问题
1,用的mysql数据库5.0,怎莫设置数据库的编码。 2,在程序中如何转换。 查了一下资料,基础比较薄弱,哪位能详细说下。在jsp中,servlet中,数据库中如何转换。有好的文章推荐下。多谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bhwhy
2007-04-29
打赏
举报
回复
楼上的是什莫意思呢
古月一刀2005
2007-04-29
打赏
举报
回复
request.setCharacterEncoding("UTF-8")。, 最好用utf-8编码
bhwhy
2007-04-29
打赏
举报
回复
下载你使用的structs版本的源代码,修改控制器,指定字符集,重新编译,因该就可以了
==============
太笼统了啊。应该有更简单的解决方法吧。
将
<%@ page contentType="text/html;charset= UTF-8" %>
改为
<%@ page contentType="text/html;charset= GB2312" %>
---------------------
我要用utf-8编码
然爷
2007-04-29
打赏
举报
回复
将
<%@ page contentType="text/html;charset= UTF-8" %>
改为
<%@ page contentType="text/html;charset= GB2312" %>
justforjoy
2007-04-29
打赏
举报
回复
下载你使用的structs版本的源代码,修改控制器,指定字符集,重新编译,因该就可以了。
bhwhy
2007-04-29
打赏
举报
回复
多谢楼上几位。我看了一下。我把所有的jap文件的开头增加了
<%@ page contentType="text/html;charset= UTF-8" %>
增加了一个过滤器:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
public class EncodingFilter implements Filter{
private String encoding="UTF-8";
public void init(FilterConfig config)throws ServletException
{
String s = config.getInitParameter("Encoding");
if(s!=null)
{
this.encoding=s;
}
}//init
public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain)throws ServletException,IOException
{
req.setCharacterEncoding(encoding);
resp.setCharacterEncoding(encoding);
chain.doFilter(req,resp);
}
public void destroy()
{
this.encoding = "UTF-8";
}
}
在web.xml中作了配置:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>addressbook.filter.EncodingFilter</filter-class>
<init-param>
<param-name>Encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
我用的是struts,IDE为eclipse,数据库为mysql,eclipse中我把编码改为UTF-8,mysql我直接修改的my.ini文件,默认的是latin1,改为UTF-8.
现在问题是index.jsp没有问题了。我一转到logon.jsp报错,logon.jsp中包含的其他的jsp页面我统统都加了<%@ page contentType="text/html;charset= UTF-8" %>,logon.jsp对应有一个form,还有一个action,现在是打不开logon.jsp,我在index.jsp中用的link转的。
[jsp] - servlet jsp 的Servlet.service()出现错误<org.apache.jasper.JasperException: 没有支持的编码: UTF-8
请问是什莫地方我忽落了吗
YOYOOOP
2007-04-28
打赏
举报
回复
转来转去会转晕的
还是写一个过滤器方便呀!!!
看看这个帖子吧!!
http://community.csdn.net/Expert/TopicView1.asp?id=5500584
adverse
2007-04-28
打赏
举报
回复
板桥里人 http://www.jdon.com 2005/06/29
Java中文问题一直困扰着很多初学者,如果了解了Java系统的中文问题原理,我们就可以对中文问题能够采取根本的解决之道。
最古老的解决方案是使用String的字节码转换,这种方案问题是不方便,我们需要破坏对象封装性,进行字节码转换。
还有一种方式是对J2EE容器进行编码设置,如果J2EE应用系统脱离该容器,则会发生乱码,而且指定容器配置不符合J2EE应用和容器分离的原则。
在Java内部运算中,涉及到的所有字符串都会被转化为UTF-8编码来进行运算。那么,在被Java转化之前,字符串是什么样的字符集? Java总是根据操作系统的默认编码字符集来决定字符串的初始编码,而且Java系统的输入和输出的都是采取操作系统的默认编码。
因此,如果能统一Java系统的输入、输出和操作系统3者的编码字符集合,将能够使Java系统正确处理和显示汉字。这是处理Java系统汉字的一个原则,但是在实际项目中,能够正确抓住和控制住Java系统的输入和输出部分是比较难的。J2EE中,由于涉及到外部浏览器和数据库等,所以中文问题乱码显得非常突出。
J2EE应用程序是运行在J2EE容器中。在这个系统中,输入途径有很多种:一种是通过页面表单打包成请求(request)发往服务器的;第二种是通过数据库读入;还有第3种输入比较复杂,JSP在第一次运行时总是被编译成Servlet,JSP中常常包含中文字符,那么编译使用javac时,Java将根据默认的操作系统编码作为初始编码。除非特别指定,如在Jbuilder/eclipse中可以指定默认的字符集。
输出途径也有几种:第一种是JSP页面的输出。由于JSP页面已经被编译成Servlet,那么在输出时,也将根据操作系统的默认编码来选择输出编码,除非指定输出编码方式;还有输出途径是数据库,将字符串输出到数据库。
由此看来,一个J2EE系统的输入输出是非常复杂,而且是动态变化的,而Java是跨平台运行的,在实际编译和运行中,都可能涉及到不同的操作系统,如果任由Java自由根据操作系统来决定输入输出的编码字符集,这将不可控制地出现乱码。
正是由于Java的跨平台特性,使得字符集问题必须由具体系统来统一解决,所以在一个Java应用系统中,解决中文乱码的根本办法是明确指定整个应用系统统一字符集。
指定统一字符集时,到底是指定ISO8859_1 、GBK还是UTF-8呢?
(1)如统一指定为ISO8859_1,因为目前大多数软件都是西方人编制的,他们默认的字符集就是ISO8859_1,包括操作系统Linux和数据库MySQL等。这样,如果指定Jive统一编码为ISO8859_1,那么就有下面3个环节必须把握:
开发和编译代码时指定字符集为ISO8859_1。
运行操作系统的默认编码必须是ISO8859_1,如Linux。
在JSP头部声明:<%@ page contentType="text/html;charset=ISO8859_1" %>。
(2)如果统一指定为GBK中文字符集,上述3个环节同样需要做到,不同的是只能运行在默认编码为GBK的操作系统,如中文Windows。
统一编码为ISO8859_1和GBK虽然带来编制代码的方便,但是各自只能在相应的操作系统上运行。但是也破坏了Java跨平台运行的优越性,只在一定范围内行得通。例如,为了使得GBK编码在linux上运行,设置Linux编码为GBK。
那么有没有一种除了应用系统以外不需要进行任何附加设置的中文编码根本解决方案呢?
将Java/J2EE系统的统一编码定义为UTF-8。UTF-8编码是一种兼容所有语言的编码方式,惟一比较麻烦的就是要找到应用系统的所有出入口,然后使用UTF-8去“结扎”它。
一个J2EE应用系统需要做下列几步工作:
开发和编译代码时指定字符集为UTF-8。JBuilder和Eclipse都可以在项目属性中设置。
使用过滤器,如果所有请求都经过一个Servlet控制分配器,那么使用Servlet的filter执行语句,将所有来自浏览器的请求(request)转换为UTF-8,因为浏览器发过来的请求包根据浏览器所在的操作系统编码,可能是各种形式编码。关键一句:
request.setCharacterEncoding("UTF-8")。
网上有此filter的源码,Jdon框架源码中com.jdon.util.SetCharacterEncodingFilter
需要配置web.xml 激活该Filter。
在JSP头部声明:<%@ page contentType="text/html;charset= UTF-8" %>。
在Jsp的html代码中,声明UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
设定数据库连接方式是UTF-8。例如连接MYSQL时配置URL如下:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
一般数据库都可以通过管理设置设定UTF-8
其他和外界交互时能够设定编码时就设定UTF-8,例如读取文件,操作XML等。
笔者以前在Jsp/Servlet时就采取这个原则,后来使用Struts、Tapestry、EJB、Hibernate、Jdon等框架时,从未被乱码困扰过,可以说适合各种架构。希望本方案供更多初学者分享,减少Java/J2EE的第一个拦路虎,也避免因为采取一些临时解决方案,导致中文问题一直出现在新的技术架构中。
CrazyGou
2007-04-28
打赏
举报
回复
http://blog.csdn.net/zieckey/archive/2007/01/27/1495842.aspx
解决3DCOAT
乱码
在3DCOAT中
遇到
乱码
问题
通常是由于字体支持不全或者软件设置不当导致的。3DCOAT是一款强大的3D绘画和纹理处理软件,它广泛应用于游戏开发、影视特效等领域。然而,对于中文用户的使用体验,如果软件无法正确显示中文...
Guitar Pro 6.1.4
乱码
解决方案
在Guitar Pro 6.1.4版本中,有些用户
遇到
了打开旧版本(如Guitar Pro 6之前的版本)时简体中文显示为
乱码
的
问题
。这主要是由于不同版本之间编码不兼容或字体支持不全所导致的。 针对这个
问题
,我们可以采取以下步骤...
有
乱码
的WORD文件
当这些文件来自不同的语言环境和编码系统时,文件编码不匹配的
问题
就可能出现,导致我们在打开这些Word文档时,内容显示异常,出现
乱码
。最近,一位朋友就
遇到
了这样的情况,他在打开从瑞典朋友那里收到的Word文档时...
大地ghost win7系统启动后桌面出现
乱码
的原因分析.docx
用户在
遇到
乱码
问题
后,可以尝试重新启动电脑。如果在下次启动时系统能够正常运行,且后续使用过程中偶尔出现
乱码
但无故障提示,那么这很可能是由于木马程序的干扰。为了解决这个
问题
,用户需要运行反病毒软件进行...
解决JD-GUI-1.6.6 中文
乱码
总结,解决JD-GUI-1.6.6中文
乱码
问题
通常需要尝试不同的策略,包括修改JD-GUI的内部配置(如果可能),使用第三方工具进行预处理,升级到最新版本,以及
求助
于社区。通过这些方法,应该能够成功地在JD-GUI中查看和...
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章