3000分都不嫌多的问题(不是高手免进) (300分)

  • 主题发起人 主题发起人 yaya8163
  • 开始时间 开始时间
char类型改为nchar
varchar改为nvarchar
 
订阅邮件通知
 
把数据库分成两部分,一部分是简体,一部分是繁体。
添加、删除、修改的时候同时添加、删除、修改两部分
应用程序也作两部分,繁体的查询繁体,简体的查询简体。
 
看帮助,讲的很清楚了!!1
 
繁体转化的例程,不太完整可参照修改

function TForm1.BigToGb(Sur:PChar):PChar;
Var
Der:array [0..255] of Char;
i:Integer;
begin
i:=0;
repeat
if (Sur<#$A1) or (i=StrLen(Sur)-1) or (Sur[i+1]<#$40) then
begin // is 英文字符
Der:=Sur;
Inc(i);
end
else begin //is 中文字符
Der:= PBIGChineseType(PBIGTable)^[Sur,Sur[i+1]].HiChar;
Der[i+1]:= PBIGChineseType(PBIGTable)^[Sur,Sur[i+1]].LoChar;
Inc(i, 2);
end;
until (i>=StrLen(Sur));
Der[StrLen(Sur)]:=#0;
Result:=Der;
end;
 
多谢kimfeng,的解答,原来我也是向分成两个数据库,但是涉及到同步问题。很麻烦,
所以才想到用Unicode,用sql的内部机制来解决。像您的繁体转化的例程,最好能在
数据库中实现。因为如果数据量大时,客户端实现是不现实的。
以前做网站,我用cgi实现过双内码存储,但是现在系统太大,无法搬到web上。
各位大虾能不能考虑一下我的实际情况给予建议,谢谢!
 
自己做一个简繁体汉字映射数据表吧,我觉得只有这个笨办法才可以切实地解决它。:)
 
自己做一个简繁体汉字内码映射表, 用Stored Procedure来转换.
我以前做网站时实现了.码表不知放哪去了.
 
用sql server的话可以不关心写到数据库中的数据是什么编码,数据库会自动统一的。
只是有一点要注意:用big5码写到数据库中的内容在gb端可以正常使用,但是gb端写入的
内容如果有简体字,在big5端看到的是问号。
 
to yaya8163:
同步的问题可以用Transaction解决,是比较麻烦,但我的意思不是说要建立两个数据
库,而是在同一个数据库中对一个表由两个表与支对应,一个表是简体,一个表时繁体
这样对数据操作的时候同时添加两个表(用Transaction)。
另外:您说的数据量大是一个什么概念,是不是需要添加到数据库的单条纪录的数据量
大呢,如果是请不要担心,因为编码转换在本地进行,速度应该是可以接受的,但是
需要对数据库的配置做出相应的调整。如果是现有的数据库的纪录数量比较大,可以
先开发新系统,然后做一个转换程序把旧的数据导入到新系统,工作量的问题而已。
当然,这样做了以后最好考虑多种语言和多数据(同一个表的数据要分离以提高速度)
的支持。
 
有两点建议:
1、数据库里必须是一种编码,简体或繁体;
2、服务器在客户端请求连接的时候用一种方式获得他的要求,简体或繁体或其他编码要求,
服务器在进行读数据解码传递和转换数据编码存储动作。
 
其实我也做过同样的东西,在服务器中存的是unicode,
在客户端按装office自带的unicode字符集就可以看到。

 
请问如何在客户端按装office自带的unicode字符集
 
方法1.统一系统字体变更,不同的版本使用不同的字体,这当然需要先下载字库。
方法2.调用OFFICE繁简体转换功能。
 
后退
顶部