分享

写回答

发帖

[提问] MSSQL 写入乱码 数据库编码问题

GoDaddy GoDaddy 7931 人阅读 | 8 人回复

发表于 2009-3-22 23:50:37 | 显示全部楼层 |阅读模式

我用的是动网.net论坛,原系统的MSSQL据库是用"Chinese_PRC_CI_AS"排序规则的.


关于数据库导入,我的操作方法过程是这样的:

1.先备份原来网站的数据库,然后在本机的MSSQL上用SQL Server Management Studio还原(因为没有权限直接还原godaddy的数据库)

2.用Database Publishing Wizard将本机的数据库导入到godaddy上,但提示出错,因为源数据库的排序规则是"Chinese_PRC_CI_AS",而目标数据库则是"SQL_Latin1_General_CP1_CI_AS"

3.于是我尝试修改godaddy数据库的排序规则,用命令: ALTER   DATABASE   库名   COLLATE   Chinese_PRC_CI_AS
但系统提示我没有权限.于是我写了邮件希望godaddy帮我修改排序规则,得到的答复是他们不能改变数据库的排序规则,他们说如果这样做会影响到数据库服务器里的其他数据库的排序规则:

Thank you for contacting Hosting Support.

Unfortunately, you will not have access to do a full text collation on shared hosting, as this would need to be done at the server level and would affect the collation for all other customer's on the shared database server. However, you should be able to change the collation for specific tables in MS SQL through the SQL Server Admin.
To Access The SQL Server Admin:

1.        Log in to your Account Manager.
2.        In the My Products section, select Hosting.
3.        Next to the hosting account you want to modify, click Manage Account.
4.        In the Databases section of the Hosting Control Center, click the SQL Server icon.
5.        Next to the database to which you are importing, click the Open Manager icon.

Please let us know if we can be of any further assistance.

Regards,
Scott S.
Hosting Support

5.于是我将本地数据库的排序规则改成:"SQL_Latin1_General_CP1_CI_AS",数据库导入成功,内容完好不变.

6.但问题是发帖时系统出错,于是我将"Web.config"中的 requestEncoding="gb2312" 改成 requestEncoding="utf-8",发帖问题解决.

7.原来的数据库内容显示正常. 但无论是新发帖还是编辑过的帖子,内容都变是???? ,所有都变成问号. godaddy的后面查看数据库,里面的中文内容也全是问题.但导入的没编辑过的中文数据没有问题. 所以排除读取错误. 那就一定是写入错误.


godaddy方面说用他们的数据库管理后面能修改数据库表的排序规则(However, you should be able to change the collation for specific tables in MS SQL through the SQL Server Admin. ),但我试过了找不到选择或方法,请版主帮忙一下,谢谢大家了!

回答|共 8 个

add.c

发表于 2009-3-23 10:19:47 | 显示全部楼层

在进行插入操作的SQL语句里,需要在中文前加个N,比如 Insert into User values(1, N'盖茨', 55, N'中文内容前面加N')

cathycathy

发表于 2009-4-24 10:02:13 | 显示全部楼层

网站上的中文变成?号了

网站上的中文变成?号了,可是我用N没实现,也不知道是那出了问题
RAKSmart

add.c

发表于 2009-4-24 10:18:56 | 显示全部楼层

回复 3# 的帖子

你的是ms sql数据库么,数据库乱码的原因比较多
你可以在论坛里搜乱码 或者sql

yyh7711

发表于 2010-4-22 15:22:32 | 显示全部楼层

我有同样的问题 同问 同问

add.c

发表于 2010-4-22 15:45:37 | 显示全部楼层

回复 5# 的帖子

参考下 GoDaddy主机空间乱码解决办法

如果解决不好,我建议你还是不要用动物的论坛,
discuz的论坛多好用

liwenhai20

发表于 2010-5-16 23:22:23 | 显示全部楼层

我的也是同样的问题,一增加新的数据就显示?号,郁闷
RAKSmart

tianping88

发表于 2010-5-16 23:36:41 | 显示全部楼层

应该是网站编码问题吧,统一一下编码应该没有问题的。

sadshell

发表于 2011-2-26 22:51:37 | 显示全部楼层

找了好久,终于解决了。

注意这一段:
  1. [variable] [nvarchar](50) COLLATE Chinese_PRC_CI_AS  NOT NULL,
复制代码
这一段:
  1. VALUES ( 'description' , N'团购' )
复制代码
这样就不会乱码了。

  1. IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dayt_configs]'))
  2.         DROP TABLE [dayt_configs]
  3. GO
  4. CREATE TABLE [dayt_configs](
  5.         [variable] [nvarchar](50) COLLATE Chinese_PRC_CI_AS  NOT NULL,
  6.         [value] [text] COLLATE Chinese_PRC_CI_AS NOT NULL,
  7. CONSTRAINT [PK_dayt_configs] PRIMARY KEY CLUSTERED
  8. (
  9.         [variable] ASC
  10. )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
  11. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  12. GO

  13. INSERT [dayt_configs] ( [variable] , [value] ) VALUES ( 'description' , N'团购' )
  14. INSERT [dayt_configs] ( [variable] , [value] ) VALUES ( 'indexshowlengh' , N'20' )
  15. INSERT [dayt_configs] ( [variable] , [value] ) VALUES ( 'keyword' , N'团购 购物' )
  16. INSERT [dayt_configs] ( [variable] , [value] ) VALUES ( 'seotitle' , N' ' )
  17. INSERT [dayt_configs] ( [variable] , [value] ) VALUES ( 'sitename' , N'团购网站' )
  18. INSERT [dayt_configs] ( [variable] , [value] ) VALUES ( 'templates' , N'default' )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则