C语言如何查看和修改MySQL使用的字符集
2012-05-09 12:37
621 查看
最近用C语言连接数据库,插入数据时如果数据中存在汉字,插入会失败。最后搞明白了是MySQL使用的字符集的问题。
1、如何查看当前连接的数据库使用的字符集
MySQL提供的接口函数prototype为:
void STDCALL mysql_get_character_set_info(MYSQL *mysql,
MY_CHARSET_INFO *charset);
其中 MY_CHARSET_INFO 结构体定义如下:
调用上述函数并打印结果:
结果如下:
可以看出当前数据库使用的字符集为latin1。现在还不知道为什么插入汉字会提示出错,虽然客户端、连接、数据库三个方面使用的字符集都是latin1,按理说latin1使用了字节的所有8位空间,不管什么字节流过来都不会报错。
2、如何修改当前连接使用的字符集
MySQL提供的接口函数prototype为:
int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);
成功返回0,失败返回非0。
在网上查资料有人说使用"utf8",我试了一下,发现还是不行。使用“GBK”可以:
其字符集信息如下:
The End.
1、如何查看当前连接的数据库使用的字符集
MySQL提供的接口函数prototype为:
void STDCALL mysql_get_character_set_info(MYSQL *mysql,
MY_CHARSET_INFO *charset);
其中 MY_CHARSET_INFO 结构体定义如下:
typedef struct character_set { unsigned int number; /* character set number */ unsigned int state; /* character set state */ const char *csname; /* collation name */ const char *name; /* character set name */ const char *comment; /* comment */ const char *dir; /* character set directory */ unsigned int mbminlen; /* min. length for multibyte strings */ unsigned int mbmaxlen; /* max. length for multibyte strings */ } MY_CHARSET_INFO;
调用上述函数并打印结果:
MY_CHARSET_INFO charset; mysql_get_character_set_info(mysql, &charset); printf("character set number:%d\n", charset.number); printf("character set state:%d\n", charset.state); printf("collation name:%s\n", charset.csname); printf("character set name:%s\n", charset.name); printf("comment:%s\n", charset.comment); printf("character set directory:%s\n", charset.dir); printf("min. length for multibyte strings:%d\n", charset.mbminlen); printf("max. length for multibyte strings:%d\n", charset.mbmaxlen);
结果如下:
可以看出当前数据库使用的字符集为latin1。现在还不知道为什么插入汉字会提示出错,虽然客户端、连接、数据库三个方面使用的字符集都是latin1,按理说latin1使用了字节的所有8位空间,不管什么字节流过来都不会报错。
2、如何修改当前连接使用的字符集
MySQL提供的接口函数prototype为:
int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);
成功返回0,失败返回非0。
在网上查资料有人说使用"utf8",我试了一下,发现还是不行。使用“GBK”可以:
if (!mysql_set_character_set(mysql, "GBK")) { printf("New connection character set: %s\n", mysql_character_set_name(mysql)); }
其字符集信息如下:
The End.
相关文章推荐
- 如何查看修改MYSQL的密码
- CentOS 查看和修改 Mysql 字符集
- Mysql如何支持Emoji表情,修改数据库字符集为utf8mb4后依然不行
- mysql系列:查看及修改字符集问题——不同版本mysql在mysqld下的配置不一样
- mysql如何修改默认字符集编码
- mysql端口查看与修改-netstat命令使用
- git使用diff----git-pull之后如何查看拉下来的文件有那些修改
- 查看以及修改mysql默认字符集的方法
- Oracle如何修改字符集及如何查看dmp文件的字符集信息
- 如何使用ASP.NET代码查看、修改AD用户信息
- mysql字符集查看以及修改
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- mysql 如何修改字符集
- Linux下如何查看并修改MySQL的mysqld.cnf配置文件
- 修改查看MYSQL字符集(charset)
- MySql表、字段、库的字符集修改及查看方法
- 查看mysql字符集及修改表结构
- 查看mysql字符集及修改表结构
- 如何设置查看源文件使用其它编辑器:修改注册表
- 查看修改MySQL字符集