编码转换

大家说torsion工具中文输入很麻烦,这段时间不忙,刚好静下心来,研究了下,只要把字符串转化从GB2312为UTF-8就可以了。

主要修改static int Sc_ScanString(int ret)这个函数就ok了

static int Sc_ScanString(int ret)
{
   CMDtext[CMDleng - 1] = 0;
   if(!collapseEscape(CMDtext+1))
      return -1;

  /*
   CMDlval.str = (char *) consoleAlloc(dStrlen(CMDtext));
   dStrcpy(CMDlval.str, CMDtext + 1);
  */
  
   int n = dStrlen(CMDtext);

   char tempStr[102400];
   dStrcpy(tempStr, CMDtext + 1);
   convertGB2312toUTF8(tempStr, tempStr, 102400);

   int count = dStrlen(tempStr);

   if(n > count)
   {
    count = n;
    count++;
    CMDlval.str = (char *) consoleAlloc(count);
    dStrcpy(CMDlval.str, tempStr);
   }
   else
   {
    count++;
    CMDlval.str = (char *) consoleAlloc(count);
    dStrcpy(CMDlval.str, CMDtext + 1);
    convertGB2312toUTF8(CMDlval.str, CMDlval.str, count);
   }

   return(ret);

}

 

不过要自己先写字符转换函数

void convertUTF8toGB2312(const char *unistring, char *outbuffer, int len)
{
 wchar_t *buf = new wchar_t[len];
 MultiByteToWideChar(CP_UTF8, 0, unistring, -1, buf, len);
 WideCharToMultiByte(CP_ACP, 0, buf, -1, outbuffer, len, NULL, NULL);

 delete []buf;
}

void convertGB2312toUTF8(const char *unistring, char *outbuffer, int len)
{
 wchar_t *buf = new wchar_t[len ];
 MultiByteToWideChar(CP_ACP, 0, unistring, -1, buf, len);
 WideCharToMultiByte(CP_UTF8, 0, buf, -1, outbuffer, len, NULL, NULL);

 delete []buf;
}

 

WCHAR  *UTF8ToUnicode(const char *str) 
 {
  int i = MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,str,-1,NULL,0);        
  WCHAR   *strUnicode=new   WCHAR[i];        
  MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,str,-1,strUnicode,i);
  return strUnicode;
  delete []strUnicode;
 }

 

char *UnicodeToUTF8(const WCHAR* pText) 
 {
  int i= WideCharToMultiByte(CP_UTF8,0,pText,-1,NULL,0,NULL,NULL); //输入缓冲区大小是宽字符数        
  char   *strUTF8   =   new   char[i];        
  WideCharToMultiByte(CP_UTF8,0,pText,-1,strUTF8,i,NULL,NULL);
  return strUTF8;
  delete []strUTF8;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值