c mysql 设置字符集_C语言如何查看和修改MySQL使用的字符集
MySQL提供的接口函數(shù)prototype為:
void ? ? ? ?STDCALL mysql_get_character_set_info(MYSQL *mysql,
MY_CHARSET_INFO *charset);
其中?MY_CHARSET_INFO 結(jié)構(gòu)體定義如下:
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;
調(diào)用上述函數(shù)并打印結(jié)果:
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);
結(jié)果如下:
可以看出當(dāng)前數(shù)據(jù)庫(kù)使用的字符集為latin1。現(xiàn)在還不知道為什么插入漢字會(huì)提示出錯(cuò),雖然客戶端、連接、數(shù)據(jù)庫(kù)三個(gè)方面使用的字符集都是latin1,按理說(shuō)latin1使用了字節(jié)的所有8位空間,不管什么字節(jié)流過(guò)來(lái)都不會(huì)報(bào)錯(cuò)。
2、如何修改當(dāng)前連接使用的字符集
MySQL提供的接口函數(shù)prototype為:
int ? ? ? ? ?STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);
成功返回0,失敗返回非0。
在網(wǎng)上查資料有人說(shuō)使用"utf8",我試了一下,發(fā)現(xiàn)還是不行。使用“GBK”可以:
if (!mysql_set_character_set(mysql, "GBK"))
{
printf("New connection character set: %s\n",
mysql_character_set_name(mysql));
}
總結(jié)
以上是生活随笔為你收集整理的c mysql 设置字符集_C语言如何查看和修改MySQL使用的字符集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。