CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

在Delphi6中怎么样让adoquery控件识别Unicode呢?(请具体举例子)分不够再加!

楼主likekoko(慢慢来吧^^)2003-12-02 17:54:17 在 Delphi / VCL组件开发及应用 提问

如题!!!!!!!!!!!!!!!!!!!!!!! 问题点数:100、回复次数:20Top

1 楼pwzhu666(暴龙)回复于 2003-12-02 17:58:09 得分 10

Unicode是什么啊Top

2 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-12-02 18:07:13 得分 70

ADO   本身就支持Unicode,倒是VCL支持得很弱。Top

3 楼likekoko(慢慢来吧^^)回复于 2003-12-02 18:22:10 得分 0

我就想往Adoquery里的sql属性添加sql语句,里面夹着   韩文   ,结果ado显示为?号!!  
   
  国际标准组织于1984年4月成立ISO/IEC   JTC1/SC2/WG2工作组,针对各国文字、符号进行统一性编码。1991年美国跨国公司成立Unicode   Consortium,并于1991年10月与WG2达成协议,采用同一编码字集。目前Unicode是采用16位编码体系,其字符集内容与ISO10646的BM(BasicMultilingual   Plane)相同。Unicode于1992年6月通过DIS(Draf   International   Standard),目前版本V2.0于1996公布,内容包含符号6811个,汉字20902个,韩文拼音11172个,造字区6400个,保留20249个,共计65534个。Top

4 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-12-02 18:25:33 得分 0

结果ado显示为?号!!  
  ~~~~~~~~~~~~~~~~~~~~~~  
  ADO怎么会显示呢?他都是不可视控件怎么能显示数据?  
   
  你说的是从DBEdit或者DBGird里面显示的数据吧?Top

5 楼likekoko(慢慢来吧^^)回复于 2003-12-02 18:43:29 得分 0

我就想往Adoquery里的sql属性添加sql语句,里面夹着   韩文   ,结果ado显示为?号!!  
  如下:  
  with   adoquery1   do  
        begin  
                close;  
                sql.Clear;  
                sql.Add('select   *   from   tqxdj   where   name='''+tntedit1.Text+'''');  
                prepared;  
                //tntedit2.Text:=sql.Text;  
                open;  
        end;  
  其中tntedit1是第三方控件,它能够识别和显示   韩文,但到adoquery1.sql中后变为?了。  
  我用tntedit2来看sql语句!结果看到       select   *   from   tqxdj   where   name='?'     :(Top

6 楼likekoko(慢慢来吧^^)回复于 2003-12-02 18:53:07 得分 0

这个问题好像挺难的,希望前辈们多多指点啊!!!在此先谢谢了!!Top

7 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-12-02 18:55:12 得分 0

VCL不支持Unicode,没办法。  
  他封装了ADO的原操作,ADO本身支持Unicode,据说VCL.net的内核支持Unicode了Top

8 楼likekoko(慢慢来吧^^)回复于 2003-12-02 19:04:32 得分 0

难道真的只有象我用的第三方控件那样去做一个能识别unicode的adoquery控件吗?真的没有办法了吗?做一个的话太难了,就现在来说就是不可能了!!555Top

9 楼likekoko(慢慢来吧^^)回复于 2003-12-02 19:18:41 得分 0

多谢pazee(耙子)   的关注!  
  其他前辈还有什么办法么??Top

10 楼likekoko(慢慢来吧^^)回复于 2003-12-02 20:22:58 得分 0

请大家多多帮忙啊,要锁楼了,我不得不下班了!明天在来请教!!!Top

11 楼flyforlove(吾将远去)回复于 2003-12-02 20:41:52 得分 10

用WideCharToString转换一下不可以吗?Top

12 楼likekoko(慢慢来吧^^)回复于 2003-12-03 08:37:32 得分 0

to:   flyforlove  
   
  好像不行!!!真是头大啊!!:(Top

13 楼flyforlove(吾将远去)回复于 2003-12-03 09:25:09 得分 0

如果你像在中文系统上显示韩文,  
  这个函数可能没有用,  
  只能是以unicode的形式显示,  
  而vcl不支持unicode,所以除了自己扩展外,只能依靠第三方控件了。  
  有个unicode   edit   的控件,可能对你有帮助,不过我没用过,你可以试一下。Top

14 楼overtime(空间在线)回复于 2003-12-03 09:31:29 得分 10

那你用动态加载的方式来加载sql看可不可以?(将sql语句放到文本文件中(计事本支持unicode的)),如果在界面上显示,那就需要找相关的函数来转换了Top

15 楼likekoko(慢慢来吧^^)回复于 2003-12-03 10:02:24 得分 0

adoDataSet   的   commandtext   可以显示   韩文,  
  如下:  
  with   adoDataSet1   do  
        begin  
                close;  
                commandtext:='';  
                commandtext:='select   *   from   tqxdj   where   name='''+trim(tntedit1.Text)+'''';  
                prepared;  
                tntedit2.Text:=commandtext;  
                open;  
        end;  
  其中   tntEdit2.text   显示为   select   *   from   tqxdj   where   name='뮤'。不再是adoquery中的select   *   from   tqxdj   where   name='?'了,可是明明数据库中有   뮤   这个值,怎么就是查不出来呢??  
  Top

16 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-12-03 11:11:43 得分 0

你看看   TADOQuery的SQL的属性,它是TStrings,是VCL的字符串类,它是单字节类型的,  
   
  而TADODataSet的CommandText是WideString,使双字节的字符串类型,就是unicode字符串,所以他支持unicodeTop

17 楼likekoko(慢慢来吧^^)回复于 2003-12-03 11:50:06 得分 0

to:pazee  
  对啊,所以用她就可以了!现在查询的问题也解决了,只要吧adoDataSet   的paramCheck属性关闭就可以查询到记录了!具体代码如下:  
  with   adoDataSet1   do  
        begin  
                close;  
                commandtext:='';  
                commandtext:='select   *   from   tqxdj   where   name=N'''+tntedit1.Text+'''';  
                prepared;  
                //tntedit2.Text:=commandtext;  
                open;  
        end;  
  其中N字母是从Transact-SQL   参考中查unicode中的用法!Delphi6.0   +windows2000Server下通过!!:)  
  Top

18 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-12-03 12:28:20 得分 0

VCL不能很好的支持Unicode,在处理多字节字符串非常麻烦,目前都是通过第三方控件或者变通的方法解决,不够都不彻底,还一个大问题就是TClientDateSet的Filter对中文的支持也不行。Top

19 楼likekoko(慢慢来吧^^)回复于 2003-12-03 14:48:06 得分 0

是呀,不过还是我太菜!多谢各位前辈的帮助!  
  最后再问一个菜问题:  
  怎么结贴,给你们分?^^Top

20 楼likekoko(慢慢来吧^^)回复于 2003-12-03 15:49:15 得分 0

后续:   ADoCommand   ADoDataSet   都行!他们的CommandText都是WideString类型!Top

相关问题

  • 求DELPHI控件
  • Delphi的kbmMemTable控件与AdoQuery有什么区别?
  • delphi控件问题:
  • Delphi的 TShockwaveFlash 控件
  • Delphi界面控件!!
  • ADOQuery控件的错误
  • 那里有xml控件 FOR DELPHI?
  • Delphi 的ServerSocket控件问题
  • 关于Delphi的ADO控件
  • 谁有 delphi 的控件?

关键词

  • 控件
  • unicode
  • 语句
  • vcl
  • 属性
  • 编码
  • sql
  • ado
  • tntedit
  • adoquery

得分解答快速导航

  • 帖主:likekoko
  • pwzhu666
  • pazee
  • flyforlove
  • overtime

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

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