sql server 2005 中文乱码!!急

lt42287949 2010-02-04 03:48:10
连到的是香港那边的饲服器,上面装的是英文版本的SQL SERVER2005,现在的问题是直接在企业管理器查询,中文是乱码的,我也到网上找了,改了 排序规则为 Chinese_PRC_CI_AS,中文字段是NVARCHAR型的.
...全文
547 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lt42287949 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 beirut 的回复:]
那你把你可以改的那一台改成 SQL_Latin1_General_CP1_CI_AS 试试

单独对一个字段 可以指定排序规则
[/Quote]
我把原先我改的那台 改回去了
把那台叫A吧
结果发现
那些测试的中文数据
insert N'你好'

查询出来 不用指定排序规则都是正常的
但是最早的那批数据不管指定不指定 都是乱码..
黄_瓜 2010-02-04
  • 打赏
  • 举报
回复
那你把你可以改的那一台改成 SQL_Latin1_General_CP1_CI_AS 试试

单独对一个字段 可以指定排序规则
lt42287949 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 beirut 的回复:]
引用 11 楼 lt42287949 的回复:
引用 9 楼 happy_stone 的回复:
引用 8 楼 lt42287949 的回复:
引用 6 楼 happy_stone 的回复:
1:你是在本地連結香港那边的饲服器?
2:你修改的排序規則是本地的還是伺服器?

查詢的時候強制制定排序規則看看


我直接用远程桌面驳到那边上的,操作都是在饲服器上面进行的

那就可能在存儲的時候就已經亂碼了
如果這樣很難恢復了

那个乱码的表,是通过SSIS把另外一台饲服器上的数据库中的几张表进行处理后,得到的一张表.那台
饲服器 的排序规则是默认的,字段前缀都不是N的.
我就把另外一台饲服器称为B 吧
在B上我用 select N'你好!'显示不是乱码,但是查询下面一条
SQL codeselectcast([84653X29X187]collate Chinese_PRC_CI_ASasnvarchar(1000))from sv_survey_84653得到的数据就是乱码


那一台是啥排序规则?
这说明你处理的时候弄乱了

修改两台服务器的排序规则一致 试试
[/Quote]

那一台是默认的排序规则:SQL_Latin1_General_CP1_CI_AS

但是那一台我是不可以修改排序规则的,
单独对一个字段 指定排序规则不行吗?
黄_瓜 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lt42287949 的回复:]
引用 9 楼 happy_stone 的回复:
引用 8 楼 lt42287949 的回复:
引用 6 楼 happy_stone 的回复:
1:你是在本地連結香港那边的饲服器?
2:你修改的排序規則是本地的還是伺服器?

查詢的時候強制制定排序規則看看


我直接用远程桌面驳到那边上的,操作都是在饲服器上面进行的

那就可能在存儲的時候就已經亂碼了
如果這樣很難恢復了

那个乱码的表,是通过SSIS把另外一台饲服器上的数据库中的几张表进行处理后,得到的一张表.那台
饲服器 的排序规则是默认的,字段前缀都不是N的.
我就把另外一台饲服器称为B 吧
在B上我用 select N'你好!'显示不是乱码,但是查询下面一条
SQL codeselectcast([84653X29X187]collate Chinese_PRC_CI_ASasnvarchar(1000))from sv_survey_84653得到的数据就是乱码
[/Quote]

那一台是啥排序规则?
这说明你处理的时候弄乱了

修改两台服务器的排序规则一致 试试
lt42287949 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lt42287949 的回复:]
引用 9 楼 happy_stone 的回复:
引用 8 楼 lt42287949 的回复:
引用 6 楼 happy_stone 的回复:
1:你是在本地連結香港那边的饲服器?
2:你修改的排序規則是本地的還是伺服器?

查詢的時候強制制定排序規則看看


我直接用远程桌面驳到那边上的,操作都是在饲服器上面进行的

那就可能在存儲的時候就已經亂碼了
如果這樣很難恢復了

那个乱码的表,是通过SSIS把另外一台饲服器上的数据库中的几张表进行处理后,得到的一张表.那台
饲服器 的排序规则是默认的,字段前缀都不是N的.
我就把另外一台饲服器称为B 吧
在B上我用 select N'你好!'显示不是乱码,但是查询下面一条
SQL codeselectcast([84653X29X187]collate Chinese_PRC_CI_ASasnvarchar(1000))from sv_survey_84653得到的数据就是乱码
[/Quote]
按你所说的 转成 2進制了,怎么转换为文字?
不过有个页面是可以看到 饲服器B 关于那张数据表的内容,结果是正常的,但就是 在企业管理器里面查询出来
,就是乱码的.我就是想把那张表的数据内容导入到EXCEL中.
starseeker7 2010-02-04
  • 打赏
  • 举报
回复
貌似沒有辦法,,,
我嘗試了半天- -
你嘗試下,先專成2進制,再讀取到程序,生成文字行不能?
select cast(name1 as binary(40)) from abc
lt42287949 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 happy_stone 的回复:]
引用 8 楼 lt42287949 的回复:
引用 6 楼 happy_stone 的回复:
1:你是在本地連結香港那边的饲服器?
2:你修改的排序規則是本地的還是伺服器?

查詢的時候強制制定排序規則看看


我直接用远程桌面驳到那边上的,操作都是在饲服器上面进行的

那就可能在存儲的時候就已經亂碼了
如果這樣很難恢復了
[/Quote]
那个乱码的表,是通过SSIS把另外一台饲服器上的数据库中的几张表进行处理后,得到的一张表.那台
饲服器 的排序规则是默认的,字段前缀都不是N的.
我就把另外一台饲服器称为B 吧
在B上我用 select N'你好!'显示不是乱码,但是查询下面一条
select cast([84653X29X187]collate Chinese_PRC_CI_AS as nvarchar(1000))  from sv_survey_84653
得到的数据就是乱码
黄_瓜 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lt42287949 的回复:]
SQL codeinsert cota (sv_ta)values('你好')
在查询出来,这条记录是不乱码的,以前的数据还是乱码,就是我改那个数据库的排序规则之前的数据还是乱码.
如果真的是数据进数据库时就乱码了,有没什么办法恢复.
[/Quote]
可能是原来的数据问题了
快乐_石头 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lt42287949 的回复:]
引用 6 楼 happy_stone 的回复:
1:你是在本地連結香港那边的饲服器?
2:你修改的排序規則是本地的還是伺服器?

查詢的時候強制制定排序規則看看


我直接用远程桌面驳到那边上的,操作都是在饲服器上面进行的
[/Quote]
那就可能在存儲的時候就已經亂碼了
如果這樣很難恢復了
lt42287949 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 happy_stone 的回复:]
1:你是在本地連結香港那边的饲服器?
2:你修改的排序規則是本地的還是伺服器?

查詢的時候強制制定排序規則看看

[/Quote]
我直接用远程桌面驳到那边上的,操作都是在饲服器上面进行的
快乐_石头 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lt42287949 的回复:]
SQL codeinsert cota (sv_ta)values('你好')
在查询出来,这条记录是不乱码的,以前的数据还是乱码,就是我改那个数据库的排序规则之前的数据还是乱码.
如果真的是数据进数据库时就乱码了,有没什么办法恢复.
[/Quote]
如果真的是数据进数据库时就乱码了,有没什么办法恢复.
很難恢復
快乐_石头 2010-02-04
  • 打赏
  • 举报
回复
1:你是在本地連結香港那边的饲服器?
2:你修改的排序規則是本地的還是伺服器?

查詢的時候強制制定排序規則看看
lt42287949 2010-02-04
  • 打赏
  • 举报
回复

insert cota (sv_ta) values('你好')

在查询出来,这条记录是不乱码的,以前的数据还是乱码,就是我改那个数据库的排序规则之前的数据还是乱码.
如果真的是数据进数据库时就乱码了,有没什么办法恢复.
starseeker7 2010-02-04
  • 打赏
  • 举报
回复
select cast(字段 as nvarchar(4000))
黄_瓜 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lt42287949 的回复:]
不行啊
我用selectN'你好!' 试下可以出结果
但是在字段前面加 N 就不行了,报错结果是invaild column
[/Quote]
select cast(字段 as nvarchar(8000))
lt42287949 2010-02-04
  • 打赏
  • 举报
回复
不行啊
我用selectN'你好!' 试下可以出结果
但是在字段前面加 N 就不行了,报错结果是invaild column
--小F-- 2010-02-04
  • 打赏
  • 举报
回复
查询的时候加N'

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧