向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'测试',成功插入了汉字,但是是什么原因呐?

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

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

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

http://www.cnblogs.com/yelaiju/archive/2010/05/29/1746826.html#undefined