一、GBK转换到Unicode编码

  1. std::string Gbk2Unicode(std::string &strValue)
  2. {
  3. std::string strReturn;
  4. unsigned char chTemp;
  5. int nLength = strValue.length()*+;
  6. WCHAR *pwchBuf = new WCHAR[nLength];
  7. memset(pwchBuf, , sizeof(WCHAR) * nLength);
  8.  
  9. MultiByteToWideChar(CP_ACP, , strValue.c_str(), -, (LPWSTR)pwchBuf, nLength);
  10.  
  11. for (size_t i = ; i < wcslen(pwchBuf); i++)
  12. {
  13. strReturn += "\\u";
  14. chTemp = *((unsigned char*)pwchBuf+i*+);
  15. if(chTemp)
  16. {
  17. strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp >> ) );
  18. strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp % ) );
  19. }
  20. chTemp = *((unsigned char*)pwchBuf+i*);
  21. strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp >> ) );
  22. strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp % ) );
  23. }
  24. delete[]pwchBuf;
  25. pwchBuf = NULL;
  26. return strReturn;
  27. }

二、Unicode转换到GBK编码

  1. std::string Unicode2GBK(std::string &strValue)
  2. {
  3. std::vector<std::string> vcString;
  4. MyTools::SplitString(strValue, "\\u", vcString);
  5.  
  6. wchar_t* pwBuf = new wchar_t[strValue.length() + ];
  7. memset(pwBuf, , (strValue.length() + )* sizeof(wchar_t));
  8.  
  9. int j();
  10.  
  11. for(std::vector<std::string>::iterator it = vcString.begin(); it != vcString.end(); ++it)
  12. {
  13. if (it->empty())
  14. {
  15. continue;
  16. }
  17. unsigned short wcTmp = ;
  18. unsigned char cTmp = ;
  19.  
  20. //因为有中文字符混合ASSCII码情况,所以条件为k < it->length()
  21. for(size_t k = ; k < it->length(); ++k)
  22. {
  23. cTmp = (unsigned char)(*it)[k];
  24.  
  25. if(cTmp <= '')//0x30~0x39 即0~9
  26. {
  27. wcTmp |= (cTmp & 0x0f) << (it->length() - k - ) * ;
  28. }
  29. else if(cTmp >= 'a')//0x61~7a 即a~z
  30. {
  31. wcTmp |= (cTmp - 0x57) << (it->length() - k - ) * ;
  32. }
  33. else//0x41~5a 即A~Z
  34. {
  35. wcTmp |= (cTmp - 0x37) << (it->length() - k - ) * ;
  36. }
  37. }
  38. pwBuf[j++] = (wchar_t)wcTmp;
  39. }
  40. char *pDst = new char[strValue.length() + ];
  41. memset(pDst, , (strValue.length() + ) * sizeof(char));
  42.  
  43. WideCharToMultiByte(CP_ACP, , pwBuf, -, (char*)pDst, strValue.length() - , NULL, NULL);
  44. std::string strRet(pDst);
  45.  
  46. delete[]pwBuf;
  47. pwBuf= NULL;
  48.  
  49. delete[]pDst;
  50. pDst=NULL;
  51.  
  52. return strRet;
  53. }

GBK与Unicode的转换的更多相关文章

  1. Qt中文编码和QString类Unicode编码转换

      版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/g423tgl234/article ...

  2. 浅谈ASCII 、ISO8859-1、GB2312、GBK、Unicode、UTF-8 的区别。

    浅谈ASCII .ISO8859-1.GB2312.GBK.Unicode.UTF-8 的区别. 首先,先科普一下什么是字符编码.字符是指一种语言中使用的基本实体,比如英文中的26个英文字母,标点符号 ...

  3. C#中文和UNICODE编码转换

    C#中文和UNICODE编码转换 //中文轉為UNICODE string str = "中文"; string outStr = ""; if (!strin ...

  4. 转换编码,将Unicode编码转换成可以浏览的utf-8编码

    //转换编码,将Unicode编码转换成可以浏览的utf-8编码 public function unicodeDecode($name) { $pattern = '/([\w]+)|(\\\u([ ...

  5. 多字节(一般指GBK) utf8 Unicode 编码互转

    // c:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinNls.h #define CP_ACP 0 // default to ANS ...

  6. Unicode字符转换成字符串

    /*** * Unicode字符转换成字符串 * @param str * Unicode字符 * @return * String * * @author WXW */ public static ...

  7. Linux中将一个GBK编码的文件转换成UTF-8编码文件

    Linux中将一个GBK编码的文件转换成UTF-8编码文件 使用iconv 命令iconv -f GBK -t UTF-8 file1 -o file2 输出另一个文件,然后再覆盖源文件内容

  8. Unicode编码转换, MD5加密,URL16进制加密解密

    一.站长网址:http://www.msxindl.com/ 1.Unicode与中文互转 16进制Unicode编码转换.还原   :http://www.msxindl.com/tools/uni ...

  9. java Unicode、ISO-8859-1、GBK、UTF-8编码转换深入浅出

    参考文献:搞懂ASCII, ISO8859-1, ANSI和Unicode Unicode百度文献 ISO-8859-1百度文献 注: 1.utf-8虽然是国际编码,对不同范围的字符使用不同长度的编码 ...

随机推荐

  1. render(七)

    Vue 的 _render 方法是实例的一个私有方法,它用来把实例渲染成一个虚拟 Node.它的定义在 src/core/instance/render.js 文件中: Vue.prototype._ ...

  2. 题解 AT4170 【[ABC103A] Task Scheduling Problem】

    翻译 有 \(3\) 个正整数 \(a\).\(b\).\(c\),请你输出这 \(3\) 个数中的最大值 \(-\) 最小值的差. 分析 求最大值 \(-\) 最小值的差,我们自然可以使用 for ...

  3. python3练习100题——031

    原题链接:http://www.runoob.com/python/python-exercise-example31.html 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样, ...

  4. Python调用libsvm

    # -*- coding: utf-8 -*- import os, sys path = r"D:\Program Files (x86)\libsvm-3.22\python" ...

  5. Sql 语句常语法

    以前感觉在这个方面很欠缺,于是就找了些这方面的材料,自己也做了些总结,汇总到了一块.便于以后的查阅. --1.获取表的主键字段SELECT name FROM SysColumns WHERE id= ...

  6. php自带的密码哈希

    常用的MD5.SHA1.SHA256哈希算法,是面向快速.高效进行哈希处理而设计的.随着技术进步和计算机硬件的提升,如今强大的计算机很容易破解这种算法.也就是说,不要用MD5.SHA1.SHA256这 ...

  7. Carmichael Numbers (快速幂)

       当今计算机科学的一个重要的领域就是密码学.有些人甚至认为密码学是计算机科学中唯一重要的领域,没有密码学生命都没有意义. 阿尔瓦罗就是这样的一个人,它正在设计一个为西班牙杂烩菜饭加密的步骤.他在加 ...

  8. Reverse is Multiplex, You Need PinTools.

    Read this slide: pin_in_CTF.pdf And this link: pin_in_CTF

  9. C#String类型转换成Brush类型

    C#String类型转换成Brush类型: using System.Windows.Media; BrushConverter brushConverter = new BrushConverter ...

  10. django--关于部署scrapyd项目报错问题

    首先在同步两篇之前写过的博客,可能能用得到 1.https://www.cnblogs.com/lutt/p/10893192.html2.https://www.cnblogs.com/lutt/p ...