怎样读出SQL Server中以char型存储的中文信息

在SQL Server服务器上,有一个表中的Name字段,其数据类型是char型,即xtype=175。里面存储了中文信息,我该怎样将它读出来呢?

比如有一条记录中,Name = '用', 如果我直接用
SELECT Name FROM 那张表,那么出来的结果是
----------------
?
系统问题要怎么解决呢?我不能修改系统,因为系统不在我的机器上,而在服务器上(我只有IP地址,不知道它的物理位置)。所以只能在客户端通过编程解读其中的内容;
--------------------------------------------------------------------------------
源于存,而非取。

很明显,源于存。 然而存的现实没有办法改变(原因已说了,服务器在哪里我都不知道),只能在取的过程中想办法了。我不知道 SQL 语句里可不可以给个转化, 如果像你说的不能。那么我要找其他办法。

其他办法一定有。因为,当我在我的机器上采用DSN连接数据库,那么可以得到正确的中文信息。然而,我现在需要使用直接通过IP地址来连接数据库,因为我的机器上配有DSN,别人的机器上不一定有。要配的话很麻烦,我希望的工具直接拿过去就能用,不要DSN的支持。

DSN是采用了什么机制,得到正确的中文信息的?

期待有真正的高手哇

第1个回答  2009-02-24
要注意char型和varchar的区别,举个例:char(10)和varchar(10)是不一样的,一个是固定字段长度,一个是变长字段。比如当字段是char(10)的时候insert一条一句,但是该语句是一个汉字,那么就相当于还有8个字符是空的,这时候就个汉字加上8个空格存储在该字段中,当字段是varchar(10)的时候,那么插入一个汉字后该字段是多长就是多长。

你的问题可以用这样解决:

SELECT Name FROM 那张表 where cast(Name as varchar(2))= '用'
第2个回答  2009-02-25
我感觉是你的系统问题。。 。
我就说个例子吧。 假设数据库服务器的系统是繁体的 而你的系统是简体的
这样就会出现乱码或者?
-----------补充-------------
楼主,要不你试试直接操作服务器上的数据库看看会出现乱码不??
把数据库属性页面的安全性设置改为'sql server和windows'身份验证模式。。
然后在本地新建一个sql server注册连接服务器直接通过查询分析器查询看得到的还是不是?或者乱码。。。 试过后告诉我。
当然你也可以通过远程桌面也可以。。。
第3个回答  2009-02-25
种瓜得瓜,种豆得豆,然之。

源于存,而非取。

-------------
不明白?那就直白点。
你的数据并不是select时的问题,而是Insert时的问题,终端用户使用了服务器系统中所不存在的字符集,诸如什么火星文之类的,导致存入数据库后,系统识别不了,就只有打?号了,因此,无论你怎么去select,出来的依旧是?。本回答被网友采纳
第4个回答  2009-02-24
select unicode(name) from 表
第5个回答  2009-02-25
字符集问题