C语言连接MySQL中文问题
在学习<Linux程序设计>第8章MySQL数据库8.3节:
使用C语言访问MySQL访问数据库时尝试把SQL数据换成了中文,但是在运行示例程序时终端输出却乱码,MySQL C 语言连接默认字符集是latin1
查了下API找到如下函数可解决中文乱码问题。
int
mysql_set_character_set(
MYSQL *
mysql,
char
*
csname)
描述
该函数用于为当前连接设置默认的字符集。字符串csname指定了1个有效的字符集名称。连接校对成为字符集的默认校对。该函数的工作方式与SET NAMES语句类似,但它还能设置mysql-
>
charset的值,从而影响了由mysql_real_escape_string(
)
设置的字符集。
该函数是在MySQL 5.
0.
7中增加的。
返回值
0表示成功,非0值表示出现错误。
示例:
#
include
<
stdlib.
h>
#
include
<
stdio.
h>
#
include
"mysql.h"
MYSQL my_connection;
MYSQL_RES *
res_ptr;
MYSQL_ROW sqlrow;
void
display_row(
)
;
int
main(
int
argc,
char
*
argv[
]
)
{
int
res;
mysql_init(
&
my_connection)
;
if
(
mysql_real_connect(
&
my_connection,
"localhost"
,
"rick"
,
"secret"
,
"foo"
,
0,
NULL
,
0)
)
{
/* 设置数据库默认字符集 */
if
(
mysql_set_character_set(
&
my_connection,
"utf8"
)
)
{
fprintf
(
stderr
,
"错误, %s\n"
,
mysql_error(
&
my_connection)
)
;
}
res =
mysql_query(
&
my_connection,
"SELECT childno, fname, age from children WHERE age > 5"
)
;
if
(
res)
{
&nb
相关文档:
#include<stdio.h>
#include<math.h>
#define u 20
int i,j,n,m;
float Ix[u],I[u][u],H_X,H_Y,H_XY,I_XY,H_XpY,Pypx[u][u],Px[u],H_YpX,Py[u],Pxpy[u][u],Pxy[u][u];
/*定义的Ix[]=I(x[i])自信息;I[][]=I(x[i];y[j])互信息;H_X=H(X)平均自信息;H_XY=H(XY)联合熵;
I_XY=I(X;Y)平均互信息;H_XpY=H(X|Y ......
linux
mysql
安装介绍:
linux
服务器 RedHat 5.0.server.
MySQL
版本:
下载地址链接:http://dev.mysql
.com/downloads/mysql
/5.1.html
MySQL
服务端:MySQL
-server-community-5.1.38-0.rhel5.i386.rpm
MySQL
客户端:MySQL
-client-community-5.1.38-0.rhel5.i386.rpm
1 安装步骤首先加载光驱 ......
作者:敖士伟
Mysql 用的是Linux (non RPM packages)
一、将mysql-5.5.0-m2-linux-i686-glibc23.tar.gz下载到/home/ikmb 并在当前目录解压;
……..
mysql-5.5.0-m2-linux-i686-glibc23/data/mysql/
mysql-5.5.0-m2-linux-i686-glibc23/data/test/
…………
二、创建MySQL组, ......
mysql字符集编码向来是一个难题,因为有时候为大多数人想的UTF8可以解决一些难题,不过不要太理想化了,有时候在window客户端下 修改成utf8,mysql是不支持的,所以还得具体问题具体分析,可是这个还真得需要你花点时间来研究
下面是一些别人的文章,在此先谢了
& ......
在MySQL中,加密和压缩函数返回二进制串。对其中的许多函数而言,结果可能包含任意的字节值,如果想存储这些结果,你应该使用一
个具有varbinary或者blob二进制串数据类型的列,这可避免潜在的删除尾部空白问题或者字符集转换问题。这些问题可能导致数据值的改变。一般而言,上述问题可能在你使用非二进制串数据类型(如ch ......