在sqlserver 数据库表中插入中文,查看表,中文显示乱码

sprintf(szSQL,"insert into %s (fromid,toid,time,msg,fontface,fontsize,fontcolor,fontflags) VALUES (%u,%u,%u,'%s','%s',%u,%u,%u)",TABLE_IM_MSG,ulFromID,ulToID,tCurrentTime,strMsg.c_str(),strfontface.c_str(),fontsize,fontcolor,fontflags);

然后执行execute(szSQL ),然后查看表,msg字段的值显示中文乱码,但是英文是没问题的

sql

8个回答

一、登陆“Microsoft SQL Server Management Studio”,然后选择对应的数据库的属性,打开属性标签。
二、找到编码属性“collation”,然后修改为Chinese_PRC 即可

wsh1992o
存钱买冰棍 回复pein6tx: 试试修改成其他的看行不行~
4 年多之前 回复
pein6tx
pein6tx 我查看了一下数据库,这个数据库的编码属性是Chinese_PRC_CI_AS
4 年多之前 回复

试一下:insert into promary values(1,N'北京市') 。既:插入语句中有中文前加一个N

pein6tx
pein6tx 我在数据库里直接执行SQL语句,是不会出现乱码的,只有在程序里调用的时候才出现
4 年多之前 回复

看下出问题的字段类型是否为nvarchar类型。

xingjigongsi
xingjigongsi 你的
4 年多之前 回复
pein6tx
pein6tx 数据库里这个msg这个字段的类型是nvarchar,
4 年多之前 回复

在你要插入的中问前加“N” 例如 insert table values(N'插入的值')

pein6tx
pein6tx 很遗憾,不行
4 年多之前 回复

要显示使用Unicode 编码的数据库字段中存储的字符时,必须使用类似这样的语句:select * from table where title like N'%标题%'

就是将要查询的字符串前面的“'”,的前面加上一个大写的“N”,形如“N'”,N和‘之间必须紧挨着,中间不能有空格

Marryliling
Marryliling 非常感谢啊,及时解决了我一个大问题,吓死我了。
接近 4 年之前 回复

字符集问题 你讲数据库的字段字符集和输入输出的字符集设置成一样的 就不会有这种问题了

xingjigongsi
xingjigongsi 不错的
4 年多之前 回复
pein6tx
pein6tx 输入输出的字符集要怎么设置?
4 年多之前 回复

各位注意啊,我的问题是,我在数据库里直接执行查询语句

insert into uvc_ims_msg (msg) values ('你好')

是不会出现乱码滴,只有当在程序里调用SQL语句,才会出现乱码

k4111
k4111 回复day_moon: 改了之后也没用的
接近 4 年之前 回复
pein6tx
pein6tx 回复day_moon: 你是说改为这样的:sprintf(szSQL,"insert into %s (fromid,toid,time,msg,fontface,fontsize,fontcolor,fontflags) VALUES (%u,%u,%u,N'%s',N'%s',%u,%u,%u)",TABLE_IM_MSG,ulFromID,ulToID,tCurrentTime,strMsg.c_str(),strfontface.c_str(),fontsize,fontcolor,fontflags);吗
4 年多之前 回复
day_moon
day_moon 把('你好')改为 (N'你好')试一下
4 年多之前 回复

我最近也遇到这样问题,请问解决了么?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!