查询sqlserver字符集

miseccf 2007-10-10 11:28:20

请问,如何能查询出sql server2000的字符集?
在哪里查看,或者是用什么sql语句可以查出。

先声名一下,我要的不是“排序规则”,现在在网上,包括在csdn上查到的,大家所说的都是sqlserver的排序规则(比如cmd->rebuildm.exe的方式),得出来的一般是chinese_pcr_ci_as等等,这并不是我想要的。

我想知道的是sqlserver用的到底是GBK,或者是UTF-8,又或者是GB2312等等,
例如在oracle里可以用“select userenv(‘language’) from dual”查询出它的字符集(GBK或UTF-8)。
...全文
13661 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZWJ1988 2012-03-06
  • 打赏
  • 举报
回复
这个sql server2000的字符集,道底怎么弄啊,我也还是没看清楚
kaoq123 2010-03-24
  • 打赏
  • 举报
回复
那些人还是没回答清,我也正为这个问题纠结啊。本以为能在此帖找到答案。楼主如果搞清了,给小弟说说。
miseccf 2007-10-18
  • 打赏
  • 举报
回复
关于sqlserver字符集的问题,讨论了这么多,我还是有些迷糊,

各位高手所说,大多都认为sqlserver字符集就是windows的字符集,但是windows字符集又是什么呢?

如果照此说,sqlserver的字符集就没有一个定数。

另外,关于unicode和非unicode,sqlserver又能用varchar(非unicode)、nvarchar(unicode),那岂不是这两种字符集同时存在?

另外,对于代码页的概念,还有些不明白
chuifengde 2007-10-11
  • 打赏
  • 举报
回复
1.用sp_helpsort就可以查出当前sql的排序规则,字符集就是用排序规则的前半部分来表达的。
2.用全局变量@@language可以看你当前的语言,用sp_helplanguage可以查看当前语言的详细格式
3.用sp_enumcodepages可以查看sql支持字符集,但并没有与1中的排序规则前部分对应

所以要查看sql的字符集,应该是用sp_helpsort得出的结果,再看结果的前半部比如chinese_prc就代表简体中文的Unicode字符,至于其它的目前我还不知道
miseccf 2007-10-11
  • 打赏
  • 举报
回复
谢谢 yesyesyes 的回答

不过各位大哥说的还是让我不大明白,“windows支持的字符集”是什么意思?

我机子上装的oracle是GBK字符集,MySQL是utf-8字符集,DB2是latin1字符集,那我的windows支持什么字符集?
sqlserver又是什么字符集呢?

至于unicode这个概念,各种数据库都有涉及,和sqlserver的字符集没多大关系的吧?

我研究得不多,各位可以多批评!

继续期待在线的各位大虾给我解答心中疑惑,谢谢!
cxmcxm 2007-10-11
  • 打赏
  • 举报
回复
syscharsets系统表的帮助
每个字符集在表中各占一行,表中还包含定义供 Microsoft® SQL Server™ 使用的排序次序。排序次序中的一个在 sysconfigures 中标记为默认排序次序,该次序是实际使用的唯一次序。

列名 数据类型 描述
type smallint 该行表示的实体类型。1001 是字符集;2001 是排序次序。
id tinyint 字符集或排序次序的唯一 ID。注意排序次序和字符集不能共享相同的 ID 号。保留从 1 到 240 的 ID 范围供 SQL Server 使用。
csid tinyint 如果该行表示字符集,则不使用该字段。如果该行表示排序次序,则该字段是在其上生成排序次序的字符集 ID。假设具有该 ID 的字符集行存在于该表中。
status smallint 内部系统状态信息位。
name sysname 字符集或排序次序的唯一名称。该字段必须只包含字母 A-Z 或 a-z、数字 0 – 9 和下划线 (_)。必须以字母开头。
description nvarchar(255) 字符集或排序次序功能的可选描述。
binarydefinition varbinary(255) 仅限内部使用。
definition image 字符集或排序次序的内部定义。该字段中的数据结构取决于类型。

yesyesyes 2007-10-11
  • 打赏
  • 举报
回复
sqlserver支持的字符集和sqlserver字符的排序规则是两回事
排序规则是对字符类数据排序时用哪个字符集的顺序来排
sqlserver支持的字符集就是windows支持的字符集
unicode字符集基本上包括了世界各种语言的字符集
其中包括中文的GB2312,GBK,以及超大字符集等等
sqlserver都支持的
前提是windows要安装了这些字符集的字库,才能正常显示
miseccf 2007-10-11
  • 打赏
  • 举报
回复

嗯,也就是说现在我的排序规则是chinese_prc_ci_as,那么字符集也就肯定是gb2312了,是不是?

排序规则其实也就是唯一确定了数据库的字符集的?

完全可以根据排序规则在代码页中找到对应的字符集的,是不是可以这样理解,chuifengde大哥?
chuifengde 2007-10-11
  • 打赏
  • 举报
回复
不用牵强理解,chinese-prc就是表示"简体中文"prc是People's Republic of China的缩写,它的页代码是936,chinese-TW 就是big5了,它的页代码是950,其实你看一下windows的代码页对照或相关资料,就会明白不少
miseccf 2007-10-11
  • 打赏
  • 举报
回复
回复hb_gx:

我不知道安装的时候有要选择字符集的,大概是每次我都选择默认安装的吧!默认安装的字符集是什么呢?我的sqlserver
安装版本是 简体中文的!
miseccf 2007-10-11
  • 打赏
  • 举报
回复

非常感谢 chuifengde 提供的方法

我用sp_enumcodepages可以查出charset和description的对应,description里描述的是语言(如简体中文、日文等)
里面“简体中文”对应的character set是gb2312

用sp_helpsort查出排序规则chinese_prc,

在这里我牵强地理解一下——chinese_prc就表示简体中文的意思,而“简体中文”对应的字符集是“gb2312”,那么本机
sqlserver的字符集自然就是gb2312了,

又或者是说,存储不同的字符,对应不同的字符集,那么,sqlserver就存在多个字符集同时存在(这就与其它几种数据库存在不同了)。

这样的理解对不对呢?
hb_gx 2007-10-11
  • 打赏
  • 举报
回复
sqlserver安装的是什么字符集 ,这个要看你安装的时候选择的是什么,和安装的版本语言也有关,每个人选的不一样安装以后自然不一样了

dawugui 2007-10-10
  • 打赏
  • 举报
回复
use master
select * from syscharsets
yesyesyes 2007-10-10
  • 打赏
  • 举报
回复
sqlserver使用的字符集取决于windows支持的字符集,windows支持的sqlserver都支持
char,varchar,text用于非unicode字符数据
nchar,nvarchar,ntext用于unicode字符数据
miseccf 2007-10-10
  • 打赏
  • 举报
回复
不是吧,难道真的没人很清楚sqlserver的字符集问题么?
它到底用的什么字符集难道没有办法查出来?
miseccf 2007-10-10
  • 打赏
  • 举报
回复
谢谢dawugui 的回答!
但是我在master里执行“select * from syscharsets”得到的是一组结果集,并且这些记录我也看不大明白,
到底哪个是本机的sqlserver字符集呢?
我听说sqlserver安装时,默认的都是gbk字符集,在哪里可以查看得到?

希望各位高手不吝赐教,谢谢!

22,207

社区成员

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

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