我在繁体系统里面建的数据库,现放在简体系统里,在表里输入简体资料,有的会带出问号?怎么解决? 例如:"客户编号"显示为"?客???"如果直接在简体中建立的就不会。

解决方案 »

  1.   

    http://dev.cbw.com/delphi/database/200510195305_4290052.shtml
      

  2.   

    这个问题有很多种解释和说法1、首先从根本上讲:为什么繁体建的库在简体下用?2、是一个库要在简体繁体下同时用吗,那么你的用SQL2005或者Oracle,SQL2000在实现这方面还是有点麻烦的,Access2000反而可以搞定,因为它是以UNICODE格式保存的3、如果是单库单语言,那就无所谓了,在简体下重建库即可,一直在繁体下使用4、如果你单库多语言,那么必须得在显示的时候进行繁体简体转换了,这个难度不到,就是影响系统效率,而且如果一个字段中同时有简体和繁体那转换是一件相当恐怖的事
    总之:实际解决方案
    1、采用支持UNICODE的数据库,譬如Access2000以上
    2、限制单库单语言,简体库就在简体下使用
      

  3.   

    可以参考:http://community.csdn.net/Expert/topic/4886/4886915.xml?temp=.6170923最近在做一个软件项目,要支持多国语言(简 繁 英 日)。
    大家知道delphi的VCL是不支持UNCODE字符编码的。必须重写,
    下载了Tnt Controls 控件可以解决问题。但自己研究了一下发现更简单的方法:
    只解决了label 控件,但不知道 edit 控件如何解决,请教?label 支持 uncode 编码:...Tlxj3DLabel = class(TGraphicControl)privte
      ...
      FCaption:WideString;
      procedure SetCaption(Value:WideString);
      ...
    protected
      ...
      procedure Paint;override;
      ...
    published
      ...
      propetry Caption : WideString read fCaption wirte SetCaption;
      ...procedure lxj3DLabel.SetCaption(Value:WideString);
    begin
      fCaption:=Value;
      RePaint;
    end;procedure lxj3DLabel.Paint;
    var
      WS:WideString;
    begin
      ...
      WS:=fCaption;
      TextOutW(Canvas.Handle,X,Y,PWideChar(WS),Length(WS));
      ...
    end;基本原理,从TGraphicControl派生出新的lxj3DLabel控件,
    用WideString类型取代fCaption以前的String类型;
    覆盖Paint方法,用TextOutW函数取代TextOut函数,直接从 uncode 编码页输出字符。以上VCL在任何语言的windows版本下,都不会显示乱码。label的uncode问题解决了,请教各位 edit 的 uncode 问题如何解决了???