shuai_wy
超帅的菜鸟博主
采纳率44.8%
2016-07-13 07:01

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

1
已采纳

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条回答

  • shuai_wy 超帅的菜鸟博主 5年前

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

    点赞 评论 复制链接分享
  • shuai_wy 超帅的菜鸟博主 5年前
  • shuai_wy 超帅的菜鸟博主 5年前

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

    点赞 评论 复制链接分享
  • shuai_wy 超帅的菜鸟博主 5年前

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

    点赞 评论 复制链接分享

相关推荐