日期:2014-05-18  浏览次数:20753 次

中文乱码问题,实在没辙了
我用的MySQL数据库,数据库characterEncoding已经设置为GBK,关于Hibernate的hibernate.characterEncoding也设置成了GBK,页面里面的charset也设置成了GBK,可插入到数据库的记录还是不能正常显示,在mysql中只能看到??,从库中提取出来处理、显示倒是一切正常,有什么办法吗?

------解决方案--------------------
可以在连接数据库的时候设置加上userUnicode=true&characterEncoding="gb2312"
当然前面也别忘记加request.setCharacterEncoding("GB2312");
------解决方案--------------------
那可能是你装MTSQL时候字符编码没有设置好,你重装一下mysql,在设置的时候注意改一下那个编码设置的地方,一般改为GBK或者是gb2312 那就要看你在写代码的时候一般用什么编码方式。

仅作参考 也许是其他原因。
------解决方案--------------------
在页面包含一个方法 
public static String toChinese(String strvalue) 

try 

if(strvalue==null) 
{return null;} 
else 
{strvalue=new String(strvalue.getBytes( "ISO8859_1 "), "GBK "); 
return strvalue; 


catch(Execption e) 
{return null;} 



--------------- 
然后在预计出现中文得地方使用该方法 
name=toChinese(username); 


-------------- 
新手上路
------解决方案--------------------
在数据库my.ini配置看看
[mysql]
default-character-set=gbk 
[mysqld]
default-character-set=gbk
还有可以用第三放mysql工具,如SQLyogEnt把表用sql导出,然后修改其编码后在导入
如:
SQL code
CREATE TABLE `student` (                 
           `id` int(11) NOT NULL auto_increment,  
           `name` varchar(20) default NULL,       
           `age` int(11) default NULL,            
           PRIMARY KEY  (`id`)                    
         ) ENGINE=InnoDB DEFAULT CHARSET=gbk

------解决方案--------------------
楼主的问题好像是在操作数据库的客户端如(SQLyogEnt)中显示的是乱码?

如果是的话,在SQLyogEnt中试试 set names"gbk"
这是在set names"gbk"显示中文的方法
------解决方案--------------------
提交form表单时编码出现错误,你可以通过ActionServlet对字符进行统一处理来解决问题。
1.在web.xml做如下修改,红色部分Servlet类路径
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>test.servlet.MyActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
 
<load-on-startup>2</load-on-startup>
</servlet>

2.servlet 类
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyActionServlet extends org.apache.struts.action.ActionServlet
{
private static final long serialVersionUID = 1L;

protected void process(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException
{
/**@todo Override this org.apache.struts.action.ActionServlet method*/
request.setCharacterEncoding("GBK");
super.process(request, response);
}
}
建议使用UTF-8编码
------解决方案--------------------
String text= new String(request.getParameter("text").getBytes("ISO8859_1"), "GBK");
这是乱码国际化标准转化