Linux编程向Mysql插入中文数据显示乱码的解决方法
来源:互联网 发布:java主函数的写法 编辑:程序博客网 时间:2024/05/16 09:08
最近写了个C++程序,其中有用到向Mysql中插入中文数据, 结果却出现乱码,经过上网查询资料和本人试验,终于解决了这个问题,现把方法说明如下:
首先说明Mysql中的字符集和校对规则。字符集是用来定义Mysql存储字符的方式,校对规则定义了字符串的比较方式。常用的字符集有GB2312(支持简体中文)、GBK(支持简体中文和繁体中文)、BIG5(支持繁体中文)、UTF8(基本上支持所有字符)。Mysql中主要涉及到以下几个字符集:服务器字符集、数据库、数据表、表中的的字段字符集、客户端字符集、连接字符集。
要处理中文,需要将character_server_set,character_client_server设置为utf8。方法如下:
在 [mysqld]中添加:
default_character_set=utf8
在[client]中添加:
default_character_set=utf8
重启mysqld服务:service mysqldrestart
进入mysql,查看字符集的情况,在命令行中输入命令:show variableslike ‘character_set_%’;
好了,现在是解决中文乱码的关键步骤了。将Mysql以下三个系统参数设置为与服务器字符集character_set_server相同的字符集。
character_set_client:客户端的字符集
character_set_results:结果字符集
character_set_connection:连接字符集
设置这三个系统参数的命令:set names ‘utf8’
这三个系统参数的作用:
信息输入路径: client--connection--server (数据传送方向从左到右)
信息输出路径: server--connection--results (数据传送方向从左到右)
故这几个系统参数的值须相同,不然以不同的编码方式传送数据,若编码方式不兼容,则容易造成乱码的问题。
以下是用来测试的程序。(数据库名One,表名student,字段sno,sname)
#include<iostream>#include<mysql/mysql.h>using namespace std;int main(void){ MYSQL mysql; mysql_init(&mysql); if(!mysql_real_connect(&mysql, "192.168.199.117", "root", NULL, "One", 0, NULL, 0)) { cout<<mysql_error(&mysql)<<endl; } if(mysql_query(&mysql, "set names \'utf8\'")) //这个是关键 { cout<<mysql_error(&mysql)<<endl; } char query[1024] = {0}; sprintf(query, "update student set sname = \'优酷视频-大话西游\' where sno = 1000"); cout<<query<<endl; if(mysql_query(&mysql, query)) { cout<<mysql_error(&mysql)<<endl; } mysql_close(&mysql); return 0;}
运行结果
若对已存在的数据库进行中文插入,除了上述步骤外,还需要修改数据库、表中字段(要插入中文的字段)的字符集。修改方式参考网上资料,这里不再详述。
- Linux编程向Mysql插入中文数据显示乱码的解决方法
- linux C编程向mysql里插入中文数据乱码
- eclipse向mysql插入中文数据乱码
- C#向MySql插入数据的时候中文变为乱码
- java程序向mysql中插入数据的中文乱码
- 向mysql中插入数据的中文乱码
- C# mysql 插入数据,中文乱码的解决方法
- mysql插入中文数据乱码的解决方法(原创)
- mysql插入数据中文显示问号/乱码
- PHP+phpMyAdmin编程插入数据显示中文乱码的问题
- android客户端向mysql数据库插入中文乱码(解决方法)
- eclipse向MySQL workbench插入中文显示乱码
- linux mysql 插入中文数据乱码解决
- 当从页面向数据库插入数据时,中文为乱码的解决方法:
- Java学习(二)——mysql插入中文数据、中文数据乱码的解决方法
- Java_JavaEE_SSH_hibernate向mysql插入数据引起中文乱码问题
- 使用Hibernate向Mysql中插入中文数据出现乱码
- 解决:Hibernate 向Mysql插入中文数据乱码,出现???
- SpringMVC深度探险(三) —— DispatcherServlet与初始化主线
- UVA 10361
- SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建项目
- c++ 设计模式---结构型模式(用三句话讲清楚每一个模式)---1
- Linux编程向Mysql插入中文数据显示乱码的解决方法
- CArray如何使用
- java 线程
- HDU 2602 Bone Collector (01背包模板)
- WCF简单实例(VS2010自动生成)--客户端
- qt编译opengl例子报错no such file
- Java 读写文件
- Jerry改编的韩国儿童英语小童摇
- ajax 异步javascript