通过g++查询到的mysql中文数据输出是乱码

这几天遇到一个问题:

通过g++查询到的mysql中文数据输出是乱码,而通过g++添加到mysql中的中文数据也是乱码,但单独通过g++输出正常,查询通过mysql添加的中文数据显示也正常.

在网查查询了很久,纠结了半天也没有找到答案。后来通过在linux吧发帖终于找到了解决方案。原来是mysql和g++默认字符集不匹配产生的问题。通过在代码中添加

int mysql_set_character_set(MYSQL *mysql, char *csname)函数终于解决了问题。

源码如下:

#include<iostream>
#include <mysql/mysql.h>
#include<string>
using namespace std;

main()

{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL_FIELD *fd;

const char *sql;

conn = mysql_init(NULL);
string aa= "使用的库名";
cout<<aa<<endl;

if (!mysql_real_connect(conn,"localhost" , "root", "123", "Supermarket", 0, NULL, 0))
{
cout<<"error !"<<endl;
return -1;
}
if (!mysql_set_character_set(conn, "utf8"))
{
cout<<"New client character set:"<<mysql_character_set_name(conn)<<endl;
}

else
{
cout<<"connected!!!"<<endl;
}

sql = "insert into T_goods values(‘777777‘,‘老坛酸菜面250g‘,‘成都康师傅有限责任公司‘,‘250g‘,4.5 , 3,10000,1) ";
int staus;
staus = mysql_query(conn,sql);
if(staus)
{
cout<<"no data"<<endl;
}

else cout<<"query success!"<<endl;

return 0;
}

数据库查询如下:

| 11117 | 茅台酒500ml | 贵州XX公司 | 500ml | 288 | 108 | 5000 | 1 |
| 11118 | 雪花啤酒 | 成都XX公司 | 250ml | 6 | 2.5 | 50000 | 1 |
| 11119 | 可口可乐125ml | 武汉XXX公司 | 125ml | 4.5 | 2 | 50000 | 1 |
| 2222222 | è€?å?›é…¸è?œé?¢250g | æˆ?都康师傅æ | 250g | 4.5 | 3 | 10000 | 1 |
| 33333333 | è€?å?›é…¸è?œé?¢250g | æˆ?都康师傅æ | 250g | 4.5 | 3 | 10000 | 1 |
| 44444 | è€?å?›é…¸è?œé?¢250g | æˆ?都康师傅æ | 250g | 4.5 | 3 | 10000 | 1 |
| 555555 | è€?å?›é…¸è?œé?¢250g | æˆ?都康师傅æ | 250g | 4.5 | 3 | 10000 | 1 |
| 6666666 | 老坛酸菜面250g | 成都康师傅有限责任公司 | 250g | 4.5 | 3 | 10000 | 1 |
| 777777 | 老坛酸菜面250g | 成都康师傅有限责任公司 | 250g | 4.5 | 3 | 10000 | 1 |
+----------+---------------------------------------+------------------------------------+---------+------------+-----------------+-------+----------+
17 rows in set (0.01 sec)

最后要感谢我爱麻省理工这位朋友!

http://tieba.baidu.com/p/4208832439?pid=80474409141&cid=0#80474409141

时间: 2024-10-13 16:08:07

通过g++查询到的mysql中文数据输出是乱码的相关文章

从内存中写入mysql中文数据乱码解决

一. 问题 数据库编码:utf8 mysql> create database dbnameDEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 表编码:utf8 drop table if exists `test`; create table `test` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(50) default '', `create

SQL Server插入中文数据后出现乱码

原文:SQL Server插入中文数据后出现乱码 今天在做项目的过程中遇到如标题的问题,情况如下图: 数据库使用的是SQL Server2012版本,创建表的脚本如下: CREATE TABLE [dbo].[Type](  [TypeId] INT NOT NULL PRIMARY KEY,     [TypeName] NVARCHAR(50)NOT NULL,     [Description] NVARCHAR(255) NULL,     [CategoryId] INT NOT NU

python从数据库中获取utf8格式的中文数据输出时变成问号或乱码

我用python操作mysql数据库,数据库中数据格式为utf8,我使用python调用select语句后获取到数据库的信息,然后使用print打印出来的时候,原本中文数据却无法显示,显示出来的是一串?,为了解决这个问题,我也是绞尽脑汁啊. 我在网上搜集了很多资料,大家都说是windows默认的格式是'GBK',输出从mysql数据库中获取到的中文数据时,需要这样写: 假设info是从数据库中获取的中文值 print info.decode('UTF-8').encode('GBK') 结果:

Linux环境下MySQL数据库用C/C++语言插入中文数据元组显示乱码问题

解决方案: 只需要在C/C++程序中的执行操作语句(查询操作等)之前加上下面一句即可: mysql_query(&mysql,"set names utf8"); 此处的utf8必须要和在数据库中执行SQL语句:show variables like 'character_set_%'状态表中的编码一致!我的编码如下所示: 只需要一致即可,此处需要注意的是utf8兼容性更好!!!推荐使用utf8编码!!! 备注:此文希望给大家提供帮助!都是经过我的实践总结!!!

php读取mysql中文数据出现乱码的解决方法

最为简单的方法就是编程访问 MySQL时,添加一行代码:mysql_query("SET NAMES 'GBK'"); 1.PHP页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了. 解决方法:选择'UTF8'或者'gb2312',这样客户浏览器会自动选择并出现正确的中文显示.注意:'UTF8'或者'gb2312'都可以正确显示中文的. 2.数据库MySQL中的编码类型不正确. 解决方法:创建数据库的时候,MySQL 字符集选择'UTF8',MySQ

关于JAVA写入MYSQL中文数据乱码问题的处理

1.检查JDBC中mysql的驱动是否加上了这个: jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=UTF-8 2.查看JAVA的IDE是否为UTF-8编码 3.查看数据库是否UTF-8编码 原文地址:https://www.cnblogs.com/liuyuxing1024/p/10384771.html

解决中文数据存入数据库乱码, 页面乱码等问题

当数据库或页面出现中文乱码时通常需要从以下几个地方进行分析 1.页面编码 2.数据库连接语句(如果数据连接的properties文件编码与数据库编码格式不一致会导致存入数据库的数据乱码不论中文英文同意乱码) 设置characterencoding为UTF-8 如jdbc.mysql.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF8 如果使用Hibernate,那就把所有的配置文件头部的编码格式改成U

mysql中插入中文数据

今天遇到的问题使mysql中插入中文数据后显示乱码,我在mysql中插入中文的时候,可以插入可是select的时候却无法显示,为此我写下这篇博客用于解决mysql插入中文. 由于有些截图没有记录下来,但是为了说明问题,我借用了别人的图,主要是为了完整的描述问题,在没有任何修改的时候,我们可以在mysql命令行中敲入以下指令,其结果如下所示: show variables like 'character%'; 可以看到,以上的编码并不支持中文,所以我们需要改变他们的编码(我这里是改成了utf8格式

mysql客户端数据乱码问题

往mysql插入中文数据时出现乱码,如下: mysql> select * from test; +------+-----------+ | id   | name      | +------+-----------+ |    1 | 鐜嬪煿鍧?| |    2 | 鐜嬫檽宄?| |    3 | 寮犲皬闆?| |    4 | 鐜嬮洩宄?| |    5 | 闄嗕簯    | |    6 | 妗冭姳濂?| |    1 | demo1     | |    2 | demo2