GBK与Unicode的转换
一、GBK转换到Unicode编码
- std::string Gbk2Unicode(std::string &strValue)
- {
- std::string strReturn;
- unsigned char chTemp;
- int nLength = strValue.length()*+;
- WCHAR *pwchBuf = new WCHAR[nLength];
- memset(pwchBuf, , sizeof(WCHAR) * nLength);
- MultiByteToWideChar(CP_ACP, , strValue.c_str(), -, (LPWSTR)pwchBuf, nLength);
- for (size_t i = ; i < wcslen(pwchBuf); i++)
- {
- strReturn += "\\u";
- chTemp = *((unsigned char*)pwchBuf+i*+);
- if(chTemp)
- {
- strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp >> ) );
- strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp % ) );
- }
- chTemp = *((unsigned char*)pwchBuf+i*);
- strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp >> ) );
- strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp % ) );
- }
- delete[]pwchBuf;
- pwchBuf = NULL;
- return strReturn;
- }
二、Unicode转换到GBK编码
- std::string Unicode2GBK(std::string &strValue)
- {
- std::vector<std::string> vcString;
- MyTools::SplitString(strValue, "\\u", vcString);
- wchar_t* pwBuf = new wchar_t[strValue.length() + ];
- memset(pwBuf, , (strValue.length() + )* sizeof(wchar_t));
- int j();
- for(std::vector<std::string>::iterator it = vcString.begin(); it != vcString.end(); ++it)
- {
- if (it->empty())
- {
- continue;
- }
- unsigned short wcTmp = ;
- unsigned char cTmp = ;
- //因为有中文字符混合ASSCII码情况,所以条件为k < it->length()
- for(size_t k = ; k < it->length(); ++k)
- {
- cTmp = (unsigned char)(*it)[k];
- if(cTmp <= '')//0x30~0x39 即0~9
- {
- wcTmp |= (cTmp & 0x0f) << (it->length() - k - ) * ;
- }
- else if(cTmp >= 'a')//0x61~7a 即a~z
- {
- wcTmp |= (cTmp - 0x57) << (it->length() - k - ) * ;
- }
- else//0x41~5a 即A~Z
- {
- wcTmp |= (cTmp - 0x37) << (it->length() - k - ) * ;
- }
- }
- pwBuf[j++] = (wchar_t)wcTmp;
- }
- char *pDst = new char[strValue.length() + ];
- memset(pDst, , (strValue.length() + ) * sizeof(char));
- WideCharToMultiByte(CP_ACP, , pwBuf, -, (char*)pDst, strValue.length() - , NULL, NULL);
- std::string strRet(pDst);
- delete[]pwBuf;
- pwBuf= NULL;
- delete[]pDst;
- pDst=NULL;
- return strRet;
- }
GBK与Unicode的转换的更多相关文章
- Qt中文编码和QString类Unicode编码转换
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/g423tgl234/article ...
- 浅谈ASCII 、ISO8859-1、GB2312、GBK、Unicode、UTF-8 的区别。
浅谈ASCII .ISO8859-1.GB2312.GBK.Unicode.UTF-8 的区别. 首先,先科普一下什么是字符编码.字符是指一种语言中使用的基本实体,比如英文中的26个英文字母,标点符号 ...
- C#中文和UNICODE编码转换
C#中文和UNICODE编码转换 //中文轉為UNICODE string str = "中文"; string outStr = ""; if (!strin ...
- 转换编码,将Unicode编码转换成可以浏览的utf-8编码
//转换编码,将Unicode编码转换成可以浏览的utf-8编码 public function unicodeDecode($name) { $pattern = '/([\w]+)|(\\\u([ ...
- 多字节(一般指GBK) utf8 Unicode 编码互转
// c:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinNls.h #define CP_ACP 0 // default to ANS ...
- Unicode字符转换成字符串
/*** * Unicode字符转换成字符串 * @param str * Unicode字符 * @return * String * * @author WXW */ public static ...
- Linux中将一个GBK编码的文件转换成UTF-8编码文件
Linux中将一个GBK编码的文件转换成UTF-8编码文件 使用iconv 命令iconv -f GBK -t UTF-8 file1 -o file2 输出另一个文件,然后再覆盖源文件内容
- Unicode编码转换, MD5加密,URL16进制加密解密
一.站长网址:http://www.msxindl.com/ 1.Unicode与中文互转 16进制Unicode编码转换.还原 :http://www.msxindl.com/tools/uni ...
- java Unicode、ISO-8859-1、GBK、UTF-8编码转换深入浅出
参考文献:搞懂ASCII, ISO8859-1, ANSI和Unicode Unicode百度文献 ISO-8859-1百度文献 注: 1.utf-8虽然是国际编码,对不同范围的字符使用不同长度的编码 ...
随机推荐
- render(七)
Vue 的 _render 方法是实例的一个私有方法,它用来把实例渲染成一个虚拟 Node.它的定义在 src/core/instance/render.js 文件中: Vue.prototype._ ...
- 题解 AT4170 【[ABC103A] Task Scheduling Problem】
翻译 有 \(3\) 个正整数 \(a\).\(b\).\(c\),请你输出这 \(3\) 个数中的最大值 \(-\) 最小值的差. 分析 求最大值 \(-\) 最小值的差,我们自然可以使用 for ...
- python3练习100题——031
原题链接:http://www.runoob.com/python/python-exercise-example31.html 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样, ...
- Python调用libsvm
# -*- coding: utf-8 -*- import os, sys path = r"D:\Program Files (x86)\libsvm-3.22\python" ...
- Sql 语句常语法
以前感觉在这个方面很欠缺,于是就找了些这方面的材料,自己也做了些总结,汇总到了一块.便于以后的查阅. --1.获取表的主键字段SELECT name FROM SysColumns WHERE id= ...
- php自带的密码哈希
常用的MD5.SHA1.SHA256哈希算法,是面向快速.高效进行哈希处理而设计的.随着技术进步和计算机硬件的提升,如今强大的计算机很容易破解这种算法.也就是说,不要用MD5.SHA1.SHA256这 ...
- Carmichael Numbers (快速幂)
当今计算机科学的一个重要的领域就是密码学.有些人甚至认为密码学是计算机科学中唯一重要的领域,没有密码学生命都没有意义. 阿尔瓦罗就是这样的一个人,它正在设计一个为西班牙杂烩菜饭加密的步骤.他在加 ...
- Reverse is Multiplex, You Need PinTools.
Read this slide: pin_in_CTF.pdf And this link: pin_in_CTF
- C#String类型转换成Brush类型
C#String类型转换成Brush类型: using System.Windows.Media; BrushConverter brushConverter = new BrushConverter ...
- django--关于部署scrapyd项目报错问题
首先在同步两篇之前写过的博客,可能能用得到 1.https://www.cnblogs.com/lutt/p/10893192.html2.https://www.cnblogs.com/lutt/p ...