asp.net 程序里向英文版SQL Server中插入中文字符,读出来全是问号,该如何解决
asp.net 程序里向英文版SQL Server中插入中文字符,读出来全是问号,该怎么解决?
字段类型:varchar
方式一: insert into table (col) values (N'简体中文') ,这种方式没问题!
方式二:insert into table (col) values (@col) 这种方式知怎么解决。
程序里向数据库中 insert 和 update 数据全是第二种方式,有没办法解决?
------解决方案--------------------
N是一定要加的,像LZ這樣用參數,也是一樣的
字段类型:varchar
方式一: insert into table (col) values (N'简体中文') ,这种方式没问题!
方式二:insert into table (col) values (@col) 这种方式知怎么解决。
程序里向数据库中 insert 和 update 数据全是第二种方式,有没办法解决?
------解决方案--------------------
N是一定要加的,像LZ這樣用參數,也是一樣的
- SQL code
declare @col nvarchar(20) set @col=N'content' insert into table (col) values (@col)
------解决方案--------------------
另外,建議所以文字字符集使用utf-8,數據庫中存儲字段使用nvarchar代替varchar
------解决方案--------------------
1. N''要和数据类型nvarchar, nchar一起使用,如果对varchar, char字段类型强制使用N'',则会产生一些特殊现象,甚至无法控制;
2. 在英文字符集(Collation name为Latin1_General_CI_AS)下,想要保存特殊符号字符、中文等双字节字符,在定义表结构时要使用nvarchar或者nchar,在保存时要用N'';
3. 在中文字符集(Collation name为Chinese_PRC_CI_AS)下,数据库系统缺省已经可以保存特殊符号字符、中文等双字节字符。即使用不使用N'',都按双字节处理。但为了统一期间,建议:
在定义表结构时如果使用nvarchar或者nchar,在保存时要用N'',
在定义表结构时如果使用varchar和char,此时不要使用N''操作