转载自:http://blog.csdn.net/zzh920625/article/details/51226312

情景再现】

如图,在项目中使用MySQL数据库,在做插入操作时,写入英文字符没有问题,但是插入中文的时候数据库中的数据就像是这样:

解决办法】

(1)无奈之余,跟了一遍代码,本以为是在js方法向Controller传值中引起了类似于”TypeError”的错误,发现跟到了Server端D层数据库访问操作都没有发现有数据传递错误,So,学习新知识的机会又到了。

(2)网上的资料显示,连接mysql库出现中文乱码的问题原因有如下几个:

1.mysql本身设定问题,例如还停留在latin1版本;

2.table的语系设定问题(包含character与collation);

3.客户端程式(例如PHP,Java)的连线语系设定问题;

对于mysql本身设定的问题,如果是数据库版本过低导致插入中文失败,只需要到官网去升级就ok,毕竟mysql是免费的。

而更多的原因则是:选用的编码不对或者编码不一致造成的。对于mysql数据库和程序代码的编码方式的设定,下面详细分析:

【具体策略】

如上所述,解决中文乱码的问题:

首先明确MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。

 

一、数据库端编码设置

1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -uroot –p,之后两次输入root用户的密码),查看数据库的编码方式命令为:

>show variables like 'character%';

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database |latin1 |

| character_set_filesystem | binary |

| character_set_results |latin1 |

| character_set_server | latin1 |

| character_set_system |utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8(先以utf8为例);

其中,character_set_client为客户端编码方式;

character_set_connection为建立连接使用的编码;

character_set_database数据库的编码;

character_set_results结果集的编码;

character_set_server数据库服务器的编码;

现将这几种编码方式全部改为”utf-8”:

本文仅仅介绍一种最根本的方法:

(1)中止MySQL服务

(2)在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可

(3)打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭

(4)启动MySQL服务并查询此时编码方式:

mysql> show variables like 'character%'; #执行编码显示

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client |utf8 |

| character_set_connection | utf8|

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results |utf8 |

| character_set_server |utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

当这八种编码方式编程utf-8的时候,此时mysql数据库即可插入中文

 

   二、程序端编码设置

如果仅仅是做了以上的操作,直接向数据库中写入中文没有问题,但是从程序向数据库写入中文可能还会有问题,经过我上午的实验,总结如下:

(1)可能是在HTML页面中规定了程序的编码方式,此时修改为”utf-8”即可。

<%@ page language=”C#” contentType=”text/html; charset=gbk”%>

(2)Server端配置文件链接数据库端:

<server=192.168.22.***;userid=root;password=123;Charset=utf8;database=>

加入charset的格式”utf-8”即可。如果没有Charset的字段,手动添加即可。

最好的方法就是整个解决方案里搜索”Charset”,将其他编码方式都统一为utf-8,因为要支持中午需要把数据库的默认编码修改为gbk或者utf8。

       总结两点:1、Mysql编码方式设置为支持中文的utf8或者gbk; 2、程序的编码方式设置成与数据库同步的utf8或者gbk。

       至此,该问题解决完毕,

 

项目--解决MySQL数据库插入中文乱码的更多相关文章

  1. mybatis连接mysql数据库插入中文乱码

    对于MySQL数据库的乱码问题,有两种情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的 ...

  2. MySQL数据库插入中文乱码解决方法

    在mysql数据库中,插入中文数据时,会出现乱码的现象. 我的测试方法: 首先用Navicat for MySql 插入一行数据,带有中文的. 再用mysql命令行来查看插入的数据,看是否出现乱码. ...

  3. 解决Hibernate向MySQL数据库插入中文乱码问题

    有时候我们在用hibernate插入中文的字符会出现乱码情况,如下图所示. 看到这种情况,第一反应便是应用程序用的字符集合数据库用的字符集不统一了.我的数据库用个是mysql的,看一下建表语句.用的是 ...

  4. 解决mysql数据库插入中文字段时出现??? 的问题

    1.检查并修改mysql的my.ini的配置文件   default-character-set=utf8 2.建立数据库是要指定字符集   create database mydb default ...

  5. 解决Python向MySQL数据库插入中文数据时出现乱码

    解决Python向MySQL数据库插入中文数据时出现乱码 先在MySQL命令行中输入如下语句查看结果: 只要character_set_client character_set_database ch ...

  6. 解决PLSQL Developer 插入中文 乱码问题(转)

    原文地址:解决PLSQL Developer 插入中文 乱码问题 PLSQL Developer 插入中文 乱码问题,如图     这个是由于oracle服务器端字符编码 和 Oracle 客户端 字 ...

  7. python向数据库插入中文乱码问题

    1.python向数据库插入中文乱码问题 直接手动insert into 中文 不乱码,但是用程序跑起来就乱码. conn =MySQLdb.connect(host="127.0.0.1& ...

  8. Windows使用MySQL数据库管理系统中文乱码问题

    声明:本文关于MySQL中文乱码问题的解决方案均基于Windows 10操作系统,如果是Linux系统会有较多不适用之处,请谨慎参考. 一.MySQL中文乱码情况 1. sqlDevelper远程登陆 ...

  9. 解决PLSQL Developer 插入中文 乱码问题

    https://blog.csdn.net/guowd/article/details/50989109 PLSQL Developer 插入中文 乱码问题,如图 这个是由于oracle服务器端字符编 ...

随机推荐

  1. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

  2. OracleServer总结进阶之系统分析(进阶完结)

    个人原创,转载请在文章头部明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10080102.html 在上一篇进阶中大概讲解了一些关于进阶方面的知识,今 ...

  3. zoj Calculate the Function

    Calculate the Function Time Limit: 2 Seconds      Memory Limit: 65536 KB You are given a list of num ...

  4. Dubbo安装及其实战1

    一.Dubbo安装 (1)安装zk和tomcat yum 安装tomcat 默认路径为 /usr/share/tomcat zookeeper 我这里采用的是使用zookeeper管理的.所以要安装z ...

  5. Xshell 6连接本机VirtualBox CentOS 6.5成功方案

    网上的文章铺天盖地,适合自己的没有... 最后老办法:文章+经验+尝试 = 成功,哈哈! 问题和步骤: 1. Xshell 过期了,修改用Free for Home/School版本,https:// ...

  6. nodejs中创建web服务,监听本地IP

    nodejs官网例子 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {' ...

  7. Windows access Linux / Ubuntu via Remote Desktop via xrdp

    Windows 多用户远程桌面连接到 Ubuntu / Linux Access Ubuntu from Windows remotely   Follow these steps : Step 1 ...

  8. 使用Spring操作Redis的key-value数据

    前言 最近工作一直忙的不可开交,小Alan已经很久没有和大家分享知识了,在深圳待了两年多,依然感觉自己还是个小菜鸟,工作中还是会遇到很多自己在短期内无法搞定的事情,每当这个时候总是会感觉到很沮丧,就会 ...

  9. 转载:https://blog.csdn.net/qq_22706515/article/details/52595027

    https://blog.csdn.net/qq_22706515/article/details/52595027 包含直播,即时通讯. 大平台都有免费版或基础版,对于需求不大的情况比较适合.

  10. 第八章 SQL高级处理 8-1 窗口函数

    一.什么是窗口函数 窗口函数也称为LOAP函数.OnLine Analytical Processing的简称.意思是对数据库数据进行实时分析处理. 窗口函数就是为实现OLAP而添加的标准SQL功能. ...