`
jdluojing
  • 浏览: 17964 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

向数据库插入中文乱码

 
阅读更多

又遇到乱码问题,这个编码问题有时候真是让人头大。找了半天都找不出来哪里出了问题,页面和数据库均是使用utf8编码,但是还是出现了乱码。直接在命令行下向数据库插入中文数据时不会出现乱码,在程序中使用代码插入时会出现乱码,控制台中打印出来数据没有乱码,没搞清楚哪里出了问题。通过查找资料最终将乱码问题解决,但是还有些不明白问题出在哪里。

通过在数据库连接url中加入?useUnicode=true&characterEncoding=UTF-8解决问题:

applicationContext.xml

<bean id="dataSource"
	class="org.apache.commons.dbcp.BasicDataSource"
	destroy-method="close">
	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
	<property name="url"
		value="jdbc:mysql://localhost:3306/cms?useUnicode=true&characterEncoding=UTF-8" />
	<property name="username" value="root" />
	<property name="password" value="" />

</bean>
我的处理编码的filter:

public class EncodingFilter implements Filter {

	private FilterConfig config;
	private String charset = "UTF-8";

	public void init(FilterConfig filterconfig) throws ServletException {
		config = filterconfig;
		String s = config.getInitParameter("encoding");
		if (s != null) {
			charset = s;
		}
	}

	public void destroy() {
		config = null;
	}

	public void doFilter(ServletRequest servletrequest,
			ServletResponse servletresponse, FilterChain filterchain)
			throws IOException, ServletException {
		
		servletrequest.setCharacterEncoding(charset);
		servletresponse.setCharacterEncoding(charset);
		
		filterchain.doFilter(servletrequest,servletresponse);
	}

}

经测试filter确实被执行了。

数据库是使用utf8编码:

jsp页面和所有Java文件都是使用的utf8编码。
没看出问题具体出现在哪一点,目前有点赶时间,先把问题解决了,有时间的好好研究一下这个编码问题。遇到很多次了,还不能小看这个编码问题。上次在程序中使用utf8编码的url地址访问windows服务器上的资源文件,出现404,改用gbk就能够访问了。还有一次发现页面在低版本chrome下出现部分css失效的问题,但是在ie和高版本的chrome中又没问题,当时还以为是css兼容性问题,后来发现失效的部分正是css文件中出现中文注释之后的样式,将中文注释去掉,则能够正常显示了。将css文件编码改为和页面编码相同(utf8)问题就解决了。还有页面之间中文参数传递时的编码和解码问题,搞web开发跟编码打交道的时间真多,有时候稍不注意就弄出乱码了。

分享到:
评论

相关推荐

    向sql server数据库插入中文时显示乱码

    在开发过程中,尤其是在使用ASP.NET与SQL...通过上述步骤,我们可以有效地解决在ASP.NET 2.0应用程序中向SQL Server 2005数据库插入中文时出现乱码的问题。需要注意的是,在实际应用中,还需根据具体情况灵活调整配置。

    sqlite数据库存取中文乱码的全部解决方案

    sqlite数据库存取中文乱码的全部解决方案(包括其它数据库oracle+sqlserver+mysql) 数据库的连接方式、数据库里存放数据的字体编码、所选编程语言的缺省字体编码。如果在编程中遇到不能正确显示中文时、、、、

    vs自带数据库sql server的中文插入乱码问题、查找当前数据库名

    解决两个问题:vs自带数据库sql server的中文插入乱码问题、查找当前数据库名 (查找数据库名在文章中间,自己往下翻吧,不单拎出来了) vs自带数据库sql server的中文插入乱码问题: 如图所示,我插入表的中文变成...

    PHP向mysql插入中文乱码问题,php文件内容写入数据库!

    以下将详细分析并解决PHP向MySQL插入中文乱码问题,以及如何正确处理PHP文件内容写入数据库。 首先,我们需要确保数据库的编码设置正确。MySQL数据库通常使用UTF-8编码,因此创建数据库和表时应指定`CHARACTER SET ...

    SQLITE数据库查询时中文乱码

    综上所述,解决SQLite数据库查询时的中文乱码问题,主要涉及数据库连接、表结构定义、数据插入、查询以及文件操作等多个环节的编码设置。通过检查并调整这些环节,可以有效地避免和解决中文乱码问题。对于文件名为`...

    Jdbc连接oracle远程数据库中文乱码解决

    Oracle数据库作为一款广泛应用的关系型数据库系统,其与Java应用程序的集成常常会遇到各种问题,其中之一就是字符编码导致的中文乱码问题。本文将深入探讨如何通过JDBC(Java Database Connectivity)连接Oracle远程...

    PB9写入非中文数据库的乱码问题

    在使用PowerBuilder 9(PB9)开发应用程序时,可能会遇到一个特定问题,即当向非中文数据库(如SQL Server)插入中文字符时,数据在第三方软件中显示为乱码。这个问题主要是由于PB9对Unicode支持不足导致的。本文提供...

    Java连接数据库oracle中文乱码解决方案

    Java连接数据库Oracle中文乱码解决方案 Java连接数据库Oracle中文乱码解决方案是Java开发中常见的问题之一,本文将通过详细的示例代码介绍如何解决Java连接数据库Oracle中文乱码的问题。 知识点一:数据库编码与...

    Java向数据库插入中文出现乱码解决方案

    在Java应用程序中向数据库插入中文数据时出现乱码是一个常见的问题,它通常由字符编码不一致导致。为了解决这一问题,我们需要确保整个数据交互过程中的编码一致性和正确的数据库配置。 首先,需要理解乱码产生的...

    解决cmd中数据库插入中文数据出错以及中文乱码问题.md

    本文档为本人学习过程中遇到的一些问题,以及对问题的解决思路,有意者请下载。解决cmd中数据库插入中文数据出错以及中文乱码问题。

    java插入数据乱码解决集锦

    ### Java插入数据乱码解决集锦 #### 一、Java中文问题的由来及核心问题解析 Java作为一种广泛使用的编程语言,在处理中文等多语言文本时可能会遇到字符编码不匹配导致的乱码问题。这些问题主要源于Java程序在不同...

    C# mysql 插入数据,中文乱码的解决方法

    然而,这种方法可能会对整个数据库连接的后续操作产生影响,因此在插入完中文数据后,别忘了恢复到原来的字符集,以避免其他非中文数据的乱码问题。 **方法二:在连接字符串中指定字符集** 更常见且推荐的做法是在...

    java插入mysql中文乱码解决

    4. **SQL语句编码问题**:直接通过SQL语句插入中文时,如果SQL语句的编码与数据库的编码不一致,也会引发乱码问题。 5. **客户端配置**:有时,客户端的系统编码设置也可能影响数据的正确显示。 #### 三、解决方案...

    flask_sqlachemy连接db2,插入中文乱码,问题解决

    ### Flask-SQLAlchemy 连接 DB2 插入中文乱码问题分析与解决方案 #### 一、问题背景 在使用Python进行Web应用开发时,Flask框架因其轻量级、易扩展等特点受到开发者青睐。Flask-SQLAlchemy作为Flask框架下的ORM...

    MySql数据库导入乱码

    在使用 PHPmyadmin 导出 MySql 数据库时,经常会遇到中文乱码的问题,这是因为数据库的字符集编码问题。中文网站使用的字符集编码一般是 gb2312、gbk、utf8 等三种,而 PHPmyadmin 的默认字符集是 latin1_swedish_ci...

    数据库乱码解决方法

    数据库乱码问题通常是由于字符编码不一致导致的,这在数据迁移、导入导出或跨系统操作时尤为常见。在本文中,我们将深入探讨如何解决Oracle数据库中的乱码问题,并尝试将其理论应用扩展到其他类型的数据库系统。 ...

    Kettle推送数据到Mysql数据库表时乱码.docx

    在 Kettle 中进行数据抽取时,如果抽取的源数据库和目标数据库不是同一个数据库,可能会导致转换后的中文出现乱码情况。这种情况的原因是由于在中文环境下有的数据库客户端默认编码格式是 UTF-8,而另外的数据库编码...

    OpenStack数据库中文乱码问题.docx

    在OpenStack环境中,数据库中文乱码问题是一个常见的挑战,特别是在处理中文数据的存储和查询时。这个问题主要出现在数据库编码设置不正确或者与OpenStack服务之间的交互过程中编码转换不当的情况。以下是一些关于...

    使用ODBC中文乱码问题.docx

    在使用ODBC对数据库进行中文字符串插入时,经常会遇到中文字符串显示乱码的问题。本文将通过对该问题的分析和解决方案,帮助读者更好地理解ODBC中文乱码问题的成因和解决方法。 一、问题描述 在使用ODBC对数据库...

Global site tag (gtag.js) - Google Analytics