jsp向mysql数据库插入中文字段 乱码以及中文空白的解决办法

1.最近在学习java web,今天在做一个小demo,作用是通过浏览器向本地数据库插入记录,照着书写了jsp代码,插入数据也提示成功了,很兴奋,但是在命令行下select 数据表,发现凡是有中文的地方就出现‘???’这样的乱码,如下:


然后就在网上找解决方案,根据网友提供的一些方法,我将jsp页面中的编码方式统统改成‘utf-8’,如下

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
<%
<span style="white-space:pre">	</span>request.setCharacterEncoding("utf-8");
%>
2.然后测试,将jsp页面上的表单提交过来的数据在网页上打印出来,显示正确,所以说源数据是正确的,这让我将问题定位到mysql上,再根据网友的回答,我找到mysql的配置文件,但是我的mysql安装目录下没有所说的my.ini,只有my-default.ini文件,于是依照网上所说的,在mysql安装根目录下复制my-default.ini,并粘贴,将名字改成my.ini,修改其内容如下:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
character-set-server=utf8
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
  basedir = C:\Program Files\MySQL\MySQL Server 5.6
  datadir = C:\Program Files\MySQL\MySQL Server 5.6\data
# port = .....
# server_id = .....
character-set-server=utf8


# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
3.重新启动mysql服务:

net stop mysql

net start mysql

4.进入命令行,进入mysql:mysql -uroot(用户root,本人未设密码)

5.查看所有编码:

 show variables like 'character%';

这里的character_set_server=utf8;而在未添加my.ini文件前是下面这样的:


character_set_server=Latin1,这就是中文乱码的罪魁祸首。

6.解决了插入中文乱码的问题后,我尝试在命令行下insert一条中文记录,结果又出现中文空白问题:


于是又去网上查,这次很顺利,根据网上说的,先set names gbk;然后再插入中文记录就ok了。

其中set names gbk;会同时改变character_set_client,character_set_connection,character_set_results的编码值为gbk(出现空白是因为我之前将编码值全部设置成了utf8导致,上面的图是改正后的,所以有些图文不符,不过不影响说明解决编码问题的方法)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值