0 0

SSH和mysql中的中文乱码问题30

本人现在正在做一个SSH(struts+spring+Hibernate)项目,数据库使用mysql。
mysql中的字符集用latin1,即iso-8859-1,因为数据库是网上服务器的,不能改变其编码。
在Eclipse中使用的是utf8的编码。
现在网页向数据库插入中文信息时,数据库保存的都是问号(?)。
请问各位大侠们,怎么向数据库插入中文?
谢谢各位了...
2010年4月02日 01:14

19个答案 按时间排序 按投票排序

0 0

在遇到中文的时候我的思路是在进数据库时 先统一编码为iso 8859-1  然后再将编码的数据存到数据库中, 在取数据的时候 ,可以先把取出来的数据转换为需要的编码  ,然后就不会出现乱码了...

2010年4月16日 14:56
0 0

在插入到数据库时,使用一个过滤器,实现将utf-8的转换成ISO-8859-1,等读取数据库后再用一个过滤器将ISO-8859-1的转换成utf-8;

2010年4月16日 13:31
0 0

jdbc:mysql:///xxx?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

2010年4月15日 18:54
0 0

2010年4月15日 15:32
0 0

<property name="connection.useUnicode">true</property> 
<property name="connection.characterEncoding">UTF-8</property> 

我是在配置文件中加入这些来完成的。

2010年4月13日 17:04
0 0

我也遇到过类似的问题,想的头痛,这是我在网上找的一点资料,希望对你有所帮助!

两次编码两次解码:

首先如果不编码,那些非英文abc等字符会被浏览器按照网页当前的字符集进行编码传到服务器去, 而服务器则只会按照服务器配置的字符集编码(有默认的好像就是ISOxxxx)进行解码,所以如果网页的字符集和服务器字符集解码一致那么就不会出乱码!

但是往往对于我们来说是不一致的。所以一般情况会出现乱码, 所以就有人想到用encodeUri来进行编码再发送到服务器,但是要注意encodeUri来编码是以utf-8来进行编码的,而服务器对于url里面的非abc等字符进行解码几乎默认都不是utf-8
所以如果你encodeUri一次的话,通过request.getParam...而得来的是被服务器以另外一种(一般是ISO...)编码解码得到的.所以通过utf-8编码过后再通过ISO解码当然获得的是乱码, 即使你通过decode(xxx, 'utf-8')获取之后的也不对,因为这个过程是 utf-8编码 ---- iso解码 ----- utf-8解码,这个过程当然不对了哦!


而通过两次编码再通过两次解码为什么就对了呢, 她是这么一个过程   utf-8编码-utf-8编码 ---  ISO解码 ----utf-8解码。

在这里要注意  因为通过第一次utf-8编码之后的都全是英文字符了,对于英文字符 utf-8编码 和ISO编码是一样的效果
所以上面的过程就相当于 utf-8编码-ISO编码 ---  ISO解码 ----utf-8解码 这样一个过程是对称的当然最后会得到正确的结果了

2010年4月13日 15:17
0 0

..latin1.存中文..无比的蛋疼
http://topic.csdn.net/u/20091028/17/02488fa9-4b4e-4b20-9ac9-5d072c79038c.html

2010年4月13日 10:26
0 0

第一,检查数据库Mysql中表的字符集
第二,检查数据连接池配置的字符集
第三,JSP设置的字符集
第四,为struts添加一个过滤器(http://robert-liu.iteye.com/admin/blogs/623964)

以上的字符集要保持一致,最好使用UTF-8

2010年4月13日 09:29
0 0

总结如下:
如果建表的时候可以选择字符集(UTF-8、GB2321、GBK),那么就选择中文字符集,Hibernate表连接的时候也要选择,问题解决。

如果建表的时候不能选择字符集,那么向数据库插入数据时,首先先转成iso-8859-1,读取的时候在转回来,貌似ISO-8859-1与中文字符集转换会有丢失,这块记的不是很清楚,实现的话用filter就可以了

总的来说如果是网上的数据库,肯定能建表,建表一般都能设定字符集,写SQL的时候在每个表上添加字符集就行了

2010年4月11日 17:59
0 0

可以使用Spring自带的过滤器。

2010年4月07日 11:00
0 0

在安装的时候我选的不是utf-8而是gb2312

2010年4月06日 16:53
0 0

连接MYSQL中文是乱码怎么解决啊 http://www.phome.asia/forum/thread/8338.html

(实用)JSP,mysql,tomcat下(基于struts2)中文及其乱码问题的解决 5大配置点 使用UTF-8编码  http://www.phome.asia/forum/thread/16991.html

修改spring+hibernate+struts2应用mysql数据库乱码问题(转载) 
http://www.phome.asia/forum/thread/16195.html

2010年4月06日 16:49
0 0

数据库编码无法改的话就在建表的时候指定为UTF-8
连接的时候也指定为UTF-8

2010年4月05日 09:31
0 0

insert into nasa2.M_CERT([CERT_TYPE_ID],[CERT_CD],[CERT_NAME],[COMPANY_ID],[CREATE_USER_ID],[CREATE_DATETIME],[UPDATE_USER_ID],[UPDATE_DATETIME],[DELETE_FLG],[EXPIRATION_DATE]) values (1400,'9533546200',N'SAP認定ソリューションコンサルタント 2004 SAP 内部統制ソリューション',200,3,getdate(),3,getdate(),'0',null);
试试插入汉字的sql,中文字段前加个N,转换Unicode编码,SQLserver这样行。

2010年4月02日 17:33
0 0

修改spring+hibernate+struts2应用mysql数据库乱码问题(转载) 

http://www.phome.asia/forum/thread/16195.html

2010年4月02日 17:11
0 0

如果数据库的编码没法改变的话,建议建表的时候,把表的charset写成utf8:

CREATE TABLE testme (
  ID varchar(32) NOT NULL,
  NAME varcar(100)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

数据库连接url按如下方式写:
url=jdbc:mysql://localhost:3306/testme?useUnicode=true&amp;characterEncoding=utf-8

2010年4月02日 10:56
0 0

引用
mysql中的字符集用latin1,即iso-8859-1,因为数据库是网上服务器的,不能改变其编码。
在Eclipse中使用的是utf8的编码。
现在网页向数据库插入中文信息时,数据库保存的都是问号(?)。
请问各位大侠们,怎么向数据库插入中文?


1 你这个问题比较麻烦,原则上数据库能用UTF-8就好了,但是你说不能改。

2 对含有中文的字段,你只能把UTF-8转换成字节流,保存到数据库里,这时你在数据库看到的不是?,但是也不是中文,只是字节流。在从数据库取出这些字段的时候,把字节流转换成UTF-8编码。

3 如果这样做,需要写一个文档,在文档中注明使用这种方法处理的字段列表。

2010年4月02日 09:41
0 0

加一个过滤器试下吧
1.建一个类:
package org.jb.common.filter;

import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;

public class SetCharacterEncodingFilter implements Filter {

  protected FilterConfig filterConfig;
  protected String encodingName;
  protected boolean enable;

  public SetCharacterEncodingFilter() {
    this.encodingName = "GBK";
    this.enable = false;
  }

  public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
  }

  public void doFilter(ServletRequest request,
                       ServletResponse response,
                       FilterChain chain)
                    throws IOException, ServletException {
    request.setCharacterEncoding("GBK");
    chain.doFilter(request, response);
  }

  public void destroy() {
  }
}

2.web.xml配置加
  <filter>
    <filter-name>encodefilter</filter-name>
    <filter-class>org.jb.common.filter.SetCharacterEncodingFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>encodefilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

2010年4月02日 09:07
0 0

1. 安装mysql的时候,会选择默认的字符集,请选择utf-8,因为utf-8才是王道.
2. 如果你不想改字符集,那么建议你把数据表的字符集改为utf-8或者是gbk,建议utf-8.
3. 如果你不介意数据库乱码,在取出数据的时候你可以加上 mysql_query("set names gbk")这样就可以将乱码的中文正确显示.
4. 要避免乱码,你一定要保证字符集的一致性.从你的数据库,数据表,以及你输出的页面.尽量使用utf-8.
这也是我在网上看到的,我觉得还行

2010年4月02日 08:34

相关推荐

    SSH下mysql中文乱码问题.docx

    通过以上步骤,可以解决 SSH 下 MySQL 中文乱码问题,确保数据的正确存储和读取。 需要注意的是,在解决中文乱码问题时,需要统一使用 UTF-8 编码方式,以避免不同编码方式之间的冲突。同时,在使用 Hibernate 连接...

    mysql+jsp+SSH网站开发中文乱码解决方案

    通过以上步骤,可以基本解决MySQL、JSP和SSH框架集成网站开发中的中文乱码问题。在实际开发过程中,要根据项目的具体情况进行调整和测试,确保每个环节都正确处理了字符编码。如果你遇到了特定的问题,可以进一步...

    向MySQL数据库存中文显示乱码

     数据库是我们软件开发中一个非常重要的组成部分,以前小编使用的是SQL Server,没有遇到过存储的中文是乱码的情况,后来在ssh的项目中使用的是MySQL的项目,遇到了乱码的问题,只要向数据库中存储中文数据会是...

    SSH+mysql开发字符集问题

    在使用MySQL与SSH框架进行开发过程中,中文字符的乱码问题是非常常见的。尤其是对于新手开发者来说,这一问题可能会耗费大量的时间与精力去解决。本文将详细介绍如何在MySQL数据库及SSH框架中正确设置字符集,以解决...

    linux secureCRT查看mysql中显示乱码

    ### Linux SecureCRT 查看 MySQL 中显示乱码的问题解析与解决方案 #### 一、问题背景及描述 在使用SecureCRT连接Linux服务器并通过MySQL客户端查询数据时,可能会遇到字符集不匹配导致的数据显示乱码问题。例如,...

    Linux redhat桌面命令中文乱码解决

    通过以上步骤,我们可以全面地解决Redhat Linux中的中文乱码问题,无论是对于控制台还是X Window系统,都能确保中文字符能够正确显示。此外,还可以根据实际需求调整语言环境设置,以满足不同的应用场景。如果还有...

    java+mysql 乱码

    在Java和MySQL交互时,有时会遇到中文乱码问题,这通常是由于编码不一致或配置不当导致的。这里我们将深入探讨如何解决这个问题,主要涉及SSH(Spring、Struts、Hibernate)框架下的设置以及MySQL数据库的相关配置。...

    Mac Mysql数据库中文乱码问题解决

    在使用Mac OS操作系统中,MySQL数据库处理中文数据时可能会出现乱码问题,这通常是由于编码设置不一致导致的。本文将详细介绍如何解决Mac Mysql数据库中的中文乱码问题。 首先,当我们在Java等编程语言中使用框架...

    sshz中文乱码解决方法

    本文主要介绍如何解决SSH框架中的中文乱码问题。针对不同的应用场景,我们可以通过以下几种方式来解决: #### 1. 强制转换字符集 在Java程序中,可以采用直接对字符串进行编码转换的方式来解决乱码问题。例如,当...

    SQLyog最新版,可避免中文乱码

    在描述中再次强调了这一特性,暗示SQLyog的新版本可能已经解决了过去可能存在的中文乱码问题。 在数据库管理中,中文乱码通常是由字符编码不匹配导致的。例如,数据库、表或字段的编码设置与数据的编码不一致,或者...

    Windows服务器MySQL中文乱码的解决方法

    当你在命令行、MySQL客户端或远程SSH工具(如SecureCRT)中输入中文字符并观察到乱码时,首先要确认客户端和MySQL服务器之间的编码设置。可以使用SQL命令`SHOW VARIABLES LIKE 'character\_set\_%';`来查看当前的...

    jsp mysql 中文输入一次搞定

    然而,在实际操作中,开发者经常会遇到一个问题:当用户在前端使用中文输入时,这些数据在后台存储到MySQL数据库中可能会出现乱码。这个问题涉及到多个层面,包括编码设置、数据库配置以及框架的配置等。本文将详细...

    乱码处理操作类

    在提供的"乱码处理"标签中,我们可以推测这个压缩包可能包含了一个自定义的Java类或组件,用于处理SSH框架下的乱码问题。这个类可能会覆盖上述的一些关键步骤,或者提供更便捷的解决方案来统一处理乱码问题。 总的...

    自己收集的SSH中的几个常见问题和解决方式

    我自己做项目中遇到了不少...(1)解决MYSQL乱码问题 (2)传递参数中文乱码 (3)jsp导包问题 (4)Hibernate基于外键的查询方法 (5)Hibernate Session中的 flush方法的作用 (6)分析java.lang.OutOfMemoryError PermGen space

    手把手练习SSH实例

    对于中文乱码问题,可以使用`native2ascii`工具将资源文件转换为GBK编码。创建一个批处理文件,执行这个转换过程,确保在IDE中设置正确的编码格式。 完成上述步骤后,SSH框架的基本结构就搭建好了。接下来,我们...

    最好用的连接mysql的管理软件,关键是不会乱码,速度又快

    在日常的数据库管理和维护中,选择一款好用的MySQL管理工具至关重要。"最好用的连接MySQL的管理软件"无疑能极大地提高工作效率,特别是对于处理字符编码问题和提供快速操作体验。 在数据库管理中,"乱码"是一个常见...

    基于ssh的个人博客系统

    - **MySQL与JSP网页中文乱码解决**:通过设置正确的字符集来避免中文显示乱码的问题。 #### 5. 系统测试 - **测试目的**:确保系统功能的完整性和稳定性。 - **测试方法**:包括单元测试、集成测试、系统测试等...

    SSH开发总结

    在部署和运行SSH项目时,可能会遇到编码问题,尤其是在处理中文字符时。以下是解决中文乱码问题的一些关键步骤: - **Eclipse配置**:确保Eclipse的编码设置为UTF-8,以保证源代码中的中文字符正常显示。 - **...

Global site tag (gtag.js) - Google Analytics