`
hudeyong926
  • 浏览: 2034984 次
  • 来自: 武汉
社区版块
存档分类
最新评论

SQL Server 2005 中文乱码解决

阅读更多

中文存到数据库中总是显示乱码。DEBUG发现页面中文到Service都是正确的中文。

解决办法:

1.关闭所有与此数据库的相关连接或者会话或者相关程序

2.然后将  SQL_Latin1_General_CP1_CI_AS 修改为 Chinese_PRC_CI_AS ( alter database db_name collate Chinese_PRC_CI_AS ) 属性-》选项

3.将varchar类型修改为nvarchar 就没问题了。或者。如果表里面没有数据的话,把表结构重新建立,建表的时候需要注意不要带“SQL_Latin1_General_CP1_CI_AS  ”排序规则。

 

后来检查数据库连接字段,发现一个参数

sendStringParametersAsUnicode=false

将其改为 sendStringParametersAsUnicode=true 问题解决。

查MSDN资料

如果 sendStringParametersAsUnicode 属性设置为“true”,则字符串参数将以 Unicode 格式发送给服务器。

如果 sendStringParametersAsUnicode 属性设置为“false”,则字符串参数将以非 Unicode 格式(例如 ASCII/MBCS 而不是 Unicode)发送给服务器。

sendStringParametersAsUnicode 属性的默认值为“true”。

 

本人有个项目使用php+mssql,而mssql只支持gb2312和utf-16编码,而php又要求使用utf-8编码,想到了freetds.而freetds是个在unix下开发的工具,我下载php_dblib.dll

在freetds进行设置,即可让FreeTDS生效。This is only used when compiled with FreeTDS。mssql默认是不支持设置字符集的,只有安装freetds的时候才能生效。http://hudeyong926.iteye.com/blog/1286307

分享到:
评论
2 楼 hudeyong926 2011-11-24  
sendStringParametersAsUnicode不是数据库配置,是jdbc连接的配置,比如:
Class.forName(DRIVER_CLASS_NAME);
Properties info = new Properties();
info.put("user", USERNAME);
info.put("password", PASSWORD);
info.put("sendStringParametersAsUnicode", "false");
conn = DriverManager.getConnection(URL, info);
1 楼 cissyqz 2011-11-23  
那sendStringParametersAsUnicode是在哪里找到的?

相关推荐

Global site tag (gtag.js) - Google Analytics