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

用BCB如何生成Unicode编码的程序?

楼主zhenyu362(不逛论坛N年)2005-04-14 21:49:16 在 C++ Builder / 基础类 提问

在VC里面可以预定义UNICODE,在BCB里面怎么做? 问题点数:20、回复次数:15Top

1 楼skphoebe(小鲨鱼)回复于 2005-04-14 22:28:01 得分 5

void   __fastcall   TfrmMian::Button1Click(TObject   *Sender)  
  {  
   
                  if   (Edit1->Text.IsEmpty())  
                  return;  
                  char   M[1024];  
                  char   MU[1024];  
                  memset(M,0,1024);  
                  memset(MU,0,1024);  
                  memcpy(M,Edit1->Text.c_str(),Edit1->Text.Length());  
                  //转化为Unicode   String  
                  ::MultiByteToWideChar(CP_ACP,0,M,-1,reinterpret_cast<wchar_t   *>(MU),1024);  
   
                  //如果MU头/0则LEN1为0  
                  char   Len1   =   strlen(MU);  
                   
   
                  AnsiString   s,S;  
                  AnsiString   str;  
                  char   tmp[2];  
                  //转化为Unicode   Hex  
                  for(int   i   =   0;i   <   Len1;i++)  
                  {  
   
                                  str   =   s.sprintf("%x",MU[i]&0x00ff);  
                                  int   L   =   str.Length();  
   
                                  //缺位补0  
                                  if   (   L   ==   1)  
                                  {  
                                                  str   =   "0"+str;  
                                  }  
   
                                  S   =   S   +   str;  
   
                  }  
                  S=S.UpperCase();  
   
                  //高2位与低2位交换  
                  char   P[1024];  
                  memset(P,0,1024);  
                  memcpy(P,S.c_str(),S.Length());  
                  char   C1,C2;  
                  for   (int   i   =   0;   i   <   Len1/2;   i++)  
                  {  
                                  C1   =   P[4*i];  
                                  C2   =   P[4*i   +   1];  
                                  P[4*i]   =   P[4*i   +   2];  
                                  P[4*i+1]   =   P[4*i   +   3];  
                                  P[4*i   +   2]   =   C1;  
                                  P[4*i   +   3]   =   C2;  
                  }  
                  Edit2->Text   =   P;  
  }Top

2 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-04-15 00:44:47 得分 5

下载TntUnicode支持包。使用里面的TntUnicode控件。  
  http://iemis.vicp.net/TntUnicodeControls.zipTop

3 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-04-15 01:02:28 得分 0

另一种就是自己全部使用API去写……Top

4 楼yhec(@_@ 俺是贫农俺怕谁)回复于 2005-04-15 09:04:27 得分 2

wchar_t       wch;       //   两字节  
   
  Top

5 楼yesry(噎死你)回复于 2005-04-15 10:04:44 得分 2

wchar_t   *str=L"哈哈,这些字符将被编译成Unicode走遍全世界都是一个效果";  
  Top

6 楼cczlp(不惑)回复于 2005-04-15 10:11:07 得分 5

在.h前面定义  
  #define   UNICODE  
  然后编程时用   TCHAR   代替char   ,   其它类似Top

7 楼zhenyu362(不逛论坛N年)回复于 2005-04-15 12:37:21 得分 0

To   skphoebe(小鲨鱼)   :这么多,看了就怕  
  To   cczlp(不惑):在哪个.h地方定义#define   UNICODE   ?  
  如果是在自己的unit1.h里面定义的话,那调用API的时候比如MessageBox那还是会调用MessageBoxATop

8 楼cczlp(不惑)回复于 2005-04-15 12:45:03 得分 0

在.cpp的所有头文件之前,就是最上面添加#define   UNICODE  
   
  如果没有这个定义,   你的MessageBox   实际是MessageBoxA,  
  如果有这个定义,   MessageBox   就实际调用MessageBoxW,  
  其它很多的API都是这样.  
   
  再说TCHAR,   如果定义UNICODE,等同WCHAR,   否则等同char.  
   
  Top

9 楼zhenyu362(不逛论坛N年)回复于 2005-04-15 13:15:52 得分 0

那这样的话就必须在所有CPP顶上添加#define   UNICODE,挺麻烦的  
  如果我的Form上面有一个TEdit控件,那么我在里面输入的内容是ANSI还是Unicode?Top

10 楼zhenyu362(不逛论坛N年)回复于 2005-04-15 13:36:14 得分 0

To   cczlp(不惑):找到了一个更好的方法  
  菜单-->Project-->Option--->Directories/Conditionals  
  在Conditional   define上面添加一个UNICODE标示符就可以了  
  定义字符串用   TCHAR   szText[]=TEXT("Unicode   String");  
  TEXT是一个宏  
  Top

11 楼weill(每天提一问,一天学一点)回复于 2005-04-15 13:39:14 得分 0

收下。Top

12 楼constantine(飘遥的安吉儿)回复于 2005-04-15 13:45:18 得分 1

up  
  Top

13 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-04-15 14:04:18 得分 0

to   楼上各位  
   
  麻烦直接使用  
  #define   UNICODE  
  编译程序到Win9x下运行一下先,然后再上来……Top

14 楼cczlp(不惑)回复于 2005-04-15 14:12:40 得分 0

to   楼上:  
  在Win9x下可以使用   #define   UNICODE,   我的程序就没问题.  
  在Win9x下,对Unicode支持不是太好是肯定的,   但还不到所有程序不能运行的地步,如果不能用,我想应该和使用的API有关.  
   
  另外,   楼上升星了不散分?Top

15 楼szfgf()回复于 2005-07-16 16:59:14 得分 0

TntUnicodeControls   中的TntLabel为何不能显示朝鲜语?(用ADO从数据库中取得后在TntLabel显示)Top

相关问题

  • Unicode编码(高分)
  • UNICODE编码问题
  • unicode编码的问题
  • 怎么根据现有编码中的几位生成另一个新编码
  • GB2312编码转换到Unicode编码的问题
  • 怎么将Unicode编码的字符串转变成DbCS编码?
  • gb18030编码格式怎么转换成UNICODE编码格式????
  • C#生成GBK编码的xml文件,救急
  • 请问fso怎么才能生成utf-8编码的文件?
  • 如何用编码自动生成文件夹?

关键词

  • unicode
  • 定义
  • 程序
  • 调用
  • mu
  • 添加
  • tchar
  • messagebox
  • 使用
  • win9x

得分解答快速导航

  • 帖主:zhenyu362
  • skphoebe
  • unsigned
  • yhec
  • yesry
  • cczlp
  • constantine

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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