2010-06-05

Godaddy SQL Server数据库中文乱码

2+

Godaddy的Windows系列主机提供两个MS SQL Server 2005数据库,在插入或更新数据库时中文字符会出现乱码,解决方法及原因摘录如下:

conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"

我使用的是ASP程序,在插入或更新数据时如果使用上面这种方式,中文是可以正常写入和读取的。但是如果采用下面这样的方式来插入或更新数据时就会出现中文乱码,内容显示为问号:

conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"
conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"

解决方法是采用第一种方式来插入和更新数据,可以把插入和更新都写成函数或过程来调用也很方便,如果坚持用后面的方式来插入或更新的话,可以在包含中文的字符串入库前加上强制转换符 N 。

conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"
conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"

除此之外,Select 操作的时候也需要加上 N 来转换,比如在搜索的时候:

conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"

备注:N 表示后面的字串是unicode类型或字符常量编码方式强制转换为unicode编码,所有的字符都用16bit来存储。使不同语言(中/英)系统的数据不会产生乱码。

~~~

在读取数据的页面顶部最好加上下面这段,这是个习惯:

conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"

另外在页面 head 部分也应该加上相应的代码:

conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"

这样就不会再出现中文乱码的情况了,中文网站也能在Godaddy主机中很好地使用MSSQL2005数据库。

除此之外,ASP连接MSSQL 2005最好使用下列代码,而不要使用 Driver={SQL Server},备注字段取值时会有问题:

conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"

本文有 2 篇评论 ↓↓

  1. 顶个、、、、、、、、、、

  2. 汗,还是不行