CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

100分,求标准答案。B/S结构里,简、繁体兼容的问题。

楼主trouble()2003-12-02 22:30:37 在 MS-SQL Server / 基础类 提问

 
          数据库服务器装在繁体WIN2K上,应用程序是   C#+ASP.NET   做的。  
   
  因为是浏览器结构(IE自动支持简、繁体),所以界面部分简、繁体不会有问题。  
   
  我的问题是:  
   
          界面不是问题,但录入的数据会有问题吗?会有什么问题?怎样解决?  
   
  强烈感谢!!! 问题点数:100、回复次数:11Top

1 楼CrazyFor(冬眠的鼹鼠)回复于 2003-12-02 22:37:56 得分 25

目标库的默认排序规则和字段排序规则为:chinese_rpc_ci_as  
  字段类型用:Nchar,Nvarchar,Ntext  
   
  插入数据时SQL语句要如:  
  insert   into   table   (col)values(N'简繁体串')  
   
  如:  
  N'蚂蚁'表明蚂蚁是Unicode   数据  
   
  即:  
  Unicode   常量使用   N   开头来指定:N'A   Unicode   string'。  
   
   
   
   
  改库  
  ALTER   DATABASE   database  
    COLLATE   ....  
  改字段  
  alter   table   表名   alter   column   字段名   类型   collate   ....  
  或设计表中修改.  
   
  Top

2 楼txlicenhe(马可)回复于 2003-12-02 23:01:34 得分 25

使用   Unicode   数据  
  Unicode   标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案。所有的计算机都用单一的   Unicode   标准   Unicode   数据中的位模式一致地翻译成字符。这保证了同一个位模式在所有的计算机上总是转换成同一个字符。数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。  
   
  对于用一个字节编码每个字符的数据类型,存在的问题之一就是此数据类型只能表示   256   个不同的字符。这就迫使对于不同的字母表(例如相对较小的欧洲字母表)采用多重编码规格(或者代码页)。而且也不可能处理象日文汉字或韩国文字这样具有数千个字符的字母表。  
   
  每个   Microsoft®   SQL   Server™   排序规则都有一个对表示   char、varchar   和   text   值中的每个字符定义位模式进行定义的代码页。可为个别的列和字符常量指派不同的代码页。客户端计算机使用与操作系统区域设置相关联的代码页解释字符位模式。有很多种不同的代码页。一些字符出现在某些代码页上,但并不出现在其它的代码页上。某些字符在一些代码页上用一个位模式定义,而在其它的代码页上却用另一个位模式定义。当您设计必须处理不同语言的国际性系统时,为了满足不同国家/地区的语言需求,给所有的计算机挑选代码页就变得困难了。要保证每一台计算机与使用不同代码页的系统交互时都进行正确的翻译也是困难的。  
   
  Unicode   规格通过采用两个字节编码每个字符使这个问题迎刃而解。转换最通用商业语言的单一规格具有足够多的   2   字节的模式   (65,536)。因为所有的   Unicode   系统均一致地采用同样的位模式来代表所有的字符,所以当从一个系统转到另一个系统时,将不会存在未正确转换字符的问题。通过在整个系统中使用   Unicode   数据类型,可尽量减少字符转换问题。  
   
  在   Microsoft   SQL   Server   中,以下数据类型支持   Unicode   数据:    
   
  nchar  
   
   
  nvarchar  
   
   
  ntext    
   
   
  说明     这些数据类型的前缀   n   来自   SQL-92   标准中的   National(Unicode)数据类型。  
   
  nchar、nvarchar   和   ntext   的用法分别与   char、varchar   和   text   的用法一样,但在以下方面不同:    
   
  Unicode支持的字符范围更大。  
   
   
  存储   Unicode   字符所需要的空间更大。  
   
   
  nchar   和   nvarchar   列最多可以有   4,000   个字符,而不象   char   和   varchar   字符那样可以有   8,000   个字符。  
   
   
  Unicode   常量使用   N   开头来指定:N'A   Unicode   string'。  
   
   
  所有   Unicode   数据都使用相同的   Unicode   代码页。排序规则不控制用于   Unicode   列的代码页,仅控制比较规则和是否区分大小写等特性。Top

3 楼youngby(C-love)回复于 2003-12-02 23:09:23 得分 25

字段类型用:Nchar,Nvarchar,NtextTop

4 楼pengdali()回复于 2003-12-03 08:32:11 得分 25

界面不是问题,但录入的数据会有问题吗?会有什么问题?怎样解决?  
   
   
  字符使用Nchar,Nvarchar,Ntext存储。  
   
  Unicode   数据  
  在   Microsoft®   SQL   Server™   2000   中,传统上非   Unicode   数据类型允许使用由特定字符集定义的字符。字符集是在安装   SQL   Server   时选择的,不能更改。使用   Unicode   数据类型,列可存储由   Unicode   标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode   数据类型需要相当于非   Unicode   数据类型两倍的存储空间。  
   
  Unicode   数据使用   SQL   Server   中的   nchar、varchar   和   ntext   数据类型进行存储。对于存储来源于多种字符集的字符的列,可采用这些数据类型。当列中各项所包含的   Unicode   字符数不同时(至多为   4000),使用   nvarchar   类型。当列中各项为同一固定长度时(至多为   4000   个   Unicode   字符),使用   nchar   类型。当列中任意项超过   4000   个   Unicode字符时,使用   ntext   类型。  
   
   
   
  说明     SQL   Server   的   Unicode   数据类型是基于   SQL-92   标准中的国家字符数据类型。SQL-92   使用前缀字符   n   标识这些数据类型及其值。  
  Top

5 楼pengdali()回复于 2003-12-03 08:33:14 得分 0

举例:  
   
  create   database   mmm  
  go  
  use   mmm  
  go  
  ALTER   DATABASE   mmm   COLLATE   Latin1_General_Ci_Ai   --建立非中文环境  
  go  
  create   table   test   (a   nvarchar(100))  
  go  
  insert   test   values(N'大力')  
  go  
  select   *   from   test   where   a=N'大力'   --这个是对得  
  select   *   from   test   where   a='大力'     --这个查不出数据Top

6 楼zjcxc(邹建)回复于 2003-12-03 08:47:21 得分 0

数据有unicode类型来存储就不会有问题了.  
   
  包括:nvarchar/nchar/ntextTop

7 楼trouble()回复于 2003-12-04 21:10:20 得分 0

我目前的理解是這樣的,不知對不對.請指點.  
   
        是不是不管(字符集/排序方式)是什麽,只要"字段"用unicode类型就可以了?  
   
   
  以下是我目前數據庫sp_helpsort   的結果:  
   
  Chinese-Taiwan-Stroke,   case-insensitive,   accent-sensitive,   kanatype-insensitive,   width-insensitive  
   
  請問這樣會有問題嗎?  
  Top

8 楼trouble()回复于 2003-12-04 22:02:35 得分 0

用同樣的標題,我用簡/繁體WINDOWS   在   CSDN   上各發了一個帖了(用CSDN做測試).  
       
  標題是:"測試一下繁體.   "   和   "测试一下简体。"  
   
  http://expert.csdn.net/Expert/topic/2528/2528831.xml?temp=.7526209  
  http://expert.csdn.net/Expert/topic/2528/2528759.xml?temp=.2569239  
   
  然後用   CSDN   的搜索功能試了一下,結果是:   在繁體搜不到簡體,在簡體裏搜不到繁體。  
   
        目前我知道的是這樣的,隨便我用什麽方法存,簡體就是簡體/繁體就是繁體.   用unicode做字段類型只是在瀏覽是不會亂碼而以。  
   
        然後我的問題來了:  
   
        我公司是香港公司,有一《工廠管理系統》大陸工廠和香港公司都要使用(查看和修改資料)。偏偏香港公司用的是繁體系統,大陸工廠用的是簡體系統。    
   
        請問在這種情况下我應該怎樣建立這表數據庫系統(目前用的是SQL   SERVER   2000)?  
  還有個問題是:   目前市面上的ERP不是有很多都說可以支持簡體、繁體、英文、日文...   嗎?  
  請問他們是怎麽處理的?   强烈感謝!!!  
  Top

9 楼youngby(C-love)回复于 2003-12-04 22:09:22 得分 0

这些是使用XML实现界面的多语言的。Top

10 楼trouble()回复于 2003-12-05 10:25:13 得分 0

upTop

11 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-05 12:58:46 得分 0

存数据的话用Unicode类型的字段完全可以解决  
  不过界面以及交互上可以考虑分别用几个字段存储Top

相关问题

  • 急急.....关于b/s和c/s的兼容问题
  • 繁体
  • 求購OA系統[要求:B/S、JSP、完全兼容繁體操作系統]
  • 繁体 or 简体?
  • 繁体中文
  • 兼容问题
  • 兼容问题
  • b
  • b
  • b

关键词

  • .net
  • 字符
  • 数据
  • 字段
  • 代码
  • unicode
  • 字符集
  • 模式
  • 计算机
  • 界面

得分解答快速导航

  • 帖主:trouble
  • CrazyFor
  • txlicenhe
  • youngby
  • pengdali

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo