sql server插入超出gb2312编码特殊字符

  sql server插入特殊字符串(超出gb2312编码)字符时,会出现乱码。如插入® 这个字符

insert into news('title')values('® ')--执行后title内容为问号?,出现乱码

  sql server插入超出gb2312编码特殊字符解决办法

insert into news('title')values(N'® ')--执行后title内容为问号?,出现乱码

MSDN解释如下:

使用 N 前缀

  在服务器上执行的代码中(例如在存储过程和触发器中)显示的 Unicode 字符串常量必须以大写字母 N 为前缀。即使所引用的列已定义为 Unicode 类型,也应如此。如果不使用 N 前缀,字符串将转换为数据库的默认代码页。这可能导致不识别某些字符。

  例如,在前面示例中创建的存储过程可以按以下方式在服务器上执行:

EXECUTE Product_Info @name = N'Chain'

使用 N 前缀的要求适用于服务器上产生的字符串常量和从客户端发送的字符串常量。

 

  原来往服务器上传送字符串时会将字符串处理为服务器商的Unicode字符串然后再插入到SQL数据库中,如果加上N会直接使用客户端传过来的字符串。


原创文章,转载请注明出处:sql server插入超出gb2312编码特殊字符
评论(0)Web开发网
阅读(181)喜欢(0)不喜欢(0)SQL及数据库