向SQL Server(2012 Express)插入汉字数据时,汉字变成?(乱码)

sql 语句:
insert into Products(Name,Description,Price,PublishOn,ProductCategory_Id) values('测试','N/A',99,GETDATE(),1);
执行结果:
29 ???? N/A 99 2016/7/13 14:41:56 1

解决方案:换成 N'测试',成功插入了汉字,但是是什么原因呐?

4个回答

1、N表示Unicode的含义,就象类型中有varchar和nvarchar一样,一个Unicode字符占两个字节.使用N'的情况主要是在双字节系统环境中强制系统对每个字符用Unicode标准来解释,否则如果你的数据库.mdf文件是中文名而又不加N'的话,数据库加载后名称可能就变成乱码,因为系统按单字节处理字符造成!

不加N时字符串默认采用数据库所采用的定序所对应的字符集,加上N表示字符串采用unicode

加了N是使用unicode编码 对于数据库的默认编码方式不确定的情况下,可以确保不会出现乱码。例如开发环境下数据库的默认编码方式是GBK,给外国用户实施到生成环境后,发现他们的数据库默认的编码方式是他们自己的语音,这样就有可能出现乱码。指定N‘’可以避免这种情况

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