zoukankan      html  css  js  c++  java
  • 编码转换

    大家说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;
     }
  • 相关阅读:
    Windows10系统中实现Android的SDK和Android studio的配置
    神经网络框架-Pytorch使用介绍
    在各个平台系统中安装Pytorch
    Jetbrain的破解
    python的collections模块的学习
    python自带的用于解析HTML的库HtmlParser
    python利用urllib和urllib2抓取百度贴吧的页面程序并下载下来在本地
    Windows下多个版本的python的使用(粘贴其他人的博客只用于自己学习,如有侵权直接删帖)
    线程同步的几种方法
    事务隔离级别
  • 原文地址:https://www.cnblogs.com/ytjjyy/p/2732124.html
Copyright © 2011-2022 走看看