简言

1. 现在编程时为了统一中英文,各国语言版本兼容性,我们都使用utf8格式存储字符串

2. mysql保存字符数据时若出现了乱码,例如中文乱码,可以确定是字符集的问题,建议统一改为utf8

3. c/c++语言操作mysql时,使用utf8编码也有很多注意要点,这里笔者做个简单的总结,避免大家踩坑

三个步骤

1. 确保mysql数据库是utf8格式,数据库的表也是utf8格式

2. 连接数据库时,调用函数,明确设置utf8字符集

3. 确保内存中的字符串是utf8编码格式

详细

1. 确保mysql数据库是utf8格式,数据库的表也是utf8格式

可以通过命令查看数据库的格式和数据库表的格式,如下:

使用命令 show create database xxxx; 来查看数据库的编码格式

使用命令 show create table xxxx; 来查看数据库表的编码格式

具体修改为utf8的办法可以使用mysql连接的编辑器来设置,也可以通过命令行来设置,笔者是使用HeidiSQL来设置的,简单

2. 连接数据库时,明确设置utf8字符集

方法比较简单,就是调用几个函数,例如mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "utf8"), mysql_set_character_set(mysql, "utf8")之类,具体的可以参考这篇博客

https://blog.csdn.net/yzf279533105/article/details/103938260

3. 确保内存中的字符串是utf8编码格式

办法如下:以一个汉字为例,比如“严”,查到它的unicode编码为0x4E25, 再手动转为utf8编码,三个字节即

1110 0100    1011 1000    1010 0101  这里我用红色标出了实际的位信息,前面紫色的是utf占位符

第一个字节转数字即228,第二个字节转数字即184,第三个字节转数字即165

我们把字符串“严”逐个字节打印出来即可

代码如下:

#include <stdio.h>
#include <iostream>
using namespace std;int main()
{char str[10] = "严";printf("%u \n", (unsigned char)str[0]);printf("%u \n", (unsigned char)str[1]);printf("%u \n", (unsigned char)str[2]);printf("%u \n", (unsigned char)str[3]);printf("%u \n", (unsigned char)str[4]);getchar();return 0;
}

打印结果如下图(可以看到前三个字节分别是228, 184, 165):

注意:在windows下如果是VisualStudio系列的编辑器,默认是GB2312的编码,必须改成utf8编码后才可以

当然,你也可以更换其他汉字,只是需先查到该汉字的unicode编码,然后手动转成utf8编码格式

可以到这个网站查所有汉字的unicode编码

http://www.mytju.com/classcode/tools/encode_gb2312.asp

可以看到“严”字的unicode是4E25,如下图

另外,如果你不会把unicode编码手动转utf8编码,笔者另外提供了一个函数来判断一个字符串是不是utf8编码

完整代码如下:

c/c++操作mysql数据库使用utf8总结相关推荐

  1. c 获取mysql列数据_转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,"C API函数描述". 函数 ...

  2. 4000字,详解 Python 操作 MySQL 数据库!

    作者 | 黄伟呢 出品 | 数据分析与统计学之美 本文的重点,就是教会大家,如何用Python来操作MySQL数据库. 1. 通用步骤 其实,这里有一个通用步骤,都是写死了的,大家照做就行. # 1. ...

  3. python mysql latin1_python操作Mysql数据库

    python操作Mysql数据库 目前工作中主要使用的还是mysql数据库,这里把常用的函数做下总结. python3选择使用pymysql包进行数据库操作,使用pip3 install PyMySQ ...

  4. mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享

    Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...

  5. JAVA通过JDBC连接并操作MySQL数据库

    JAVA通过JDBC连接并操作MySQL数据库 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提 ...

  6. php操作mysql数据库的扩展有哪些_8.PHP操作MySQL数据库(Mysqli扩展)

    思考:如果数据库的操作都是需要我们手动去调用客户端发送指令,那么这样的操作有什么意义呢? 引入:手动通过客户端操作MySQL数据库,只是我们学习SQL的一种手段.要实现数据库的自动调用,就需要客户端能 ...

  7. c# mysql executescalar_C# 操作MySQL数据库, ExecuteScalar()方法执行T-SQL语句, COUNT(*), 统计数据...

    C# 操作My SQL数据库需要引用"MySql.Data", 可通过两种方式获取. 1.从NuGet下载"Install-Package MySql.Data -Ver ...

  8. mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享_PHP教程

    Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...

  9. C#操作MySQL数据库的简单例子

    其实很简单,但是我在网上找的时候却找不到有用的信息,奇怪. 到这里下载驱动 http://www.mysql.com/products/connector/ 下载的包里面有使用的例子. 需要具备的知识 ...

最新文章

  1. 自定义动画 animate || 案例:王者荣耀手风琴效果分析
  2. 操作系统实验——简易FAT16文件系统的实现
  3. python 文本处理模块_Python文本处理几种方法
  4. 软考-信息系统项目管理师-项目人力资源管理
  5. Linux常用命令,超强万字总结!
  6. 关闭终端php就退出进程_解决windows下php-cgi进程经常自动关闭
  7. python open ascii codec cant_Python3.6 报错问题:'ascii' codec can't encode character
  8. linux添加删除回环地址,CentOS7如何添加本地回环地址?CentOS7添加本地回环地址的方法...
  9. c++ 项不会计算为接受 0 个参数的函数_OFFSET函数从入门到进阶之进阶操作篇(与MATCH组合)...
  10. [转载] epoll详解
  11. server2019安装mysql_windows server2019下安装mysql8.0.11
  12. 《HBase权威指南》读书笔记6:第六章 可用客户端
  13. python的invalid syntax是什么意思_请问在python 中 出现 invalid syntax 是什么意思 ?
  14. 基于FPGA的ROM-VGA图像处理(老师好帅系列)
  15. Word文档人民币符号怎么打出来
  16. Python 各种扩展名(py, pyc, pyw, pyo, pyd)区别
  17. 一个人被提拔,不仅仅是能力,而是信任
  18. 天翼云80/8080/443端口访问不通问题
  19. 清华教授:多年以来,我对我的学生都不太满意
  20. 明解C语言入门篇_第12章_结构体

热门文章

  1. AtCoder - arc120_c Swaps 2(思维+线段树+模拟)
  2. 牛客 - 阔力梯的树(树上启发式合并)
  3. CodeForces - 618D Hamiltonian Spanning Tree(思维+贪心)
  4. LightOJ - 1074 Extended Traffic(最短路+判断负环)
  5. 视觉注意力机制(中)
  6. linux网络培训题目,linux 网络学习问题命令总结
  7. c++ reference counting引用计数原理
  8. cocos2d-x游戏实例(3)-获得地图索引
  9. 不一样的图片加载方式
  10. 趣谈设计模式 | 适配器模式(Adapter):如何让现存对象适用于新的环境?