String字符串编码格式转换(UTF8/GBK)
1、转UTF8编码
string StdStringToUTF8(const string& str)
{int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴 ZeroMemory(pwBuf, nwLen * 2 + 2);::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen);int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);char * pBuf = new char[nLen + 1];ZeroMemory(pBuf, nLen + 1);::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);std::string retStr(pBuf);delete[]pwBuf;delete[]pBuf;pwBuf = NULL;pBuf = NULL;return retStr;
}
2、转GBK编码
string StdStringToGBK(const string& str)
{int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴 memset(pwBuf, 0, nwLen * 2 + 2);MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen);int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL);char * pBuf = new char[nLen + 1];memset(pBuf, 0, nLen + 1);WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);std::string retStr = pBuf;delete[]pBuf;delete[]pwBuf;pBuf = NULL;pwBuf = NULL;return retStr;
}
Qt中UTF8与GBK相互转换方法相对比较简单:
QString GBK2UTF8(const QString &str)
{QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");return utf8->toUnicode(str.toUtf8());
}QString UTF82GBK(const QString &str)
{QTextCodec *gbk = QTextCodec::codecForName("GB18030");return gbk->toUnicode(str.toLocal8Bit());
}std::string GBK2UTF8(std::string &str)
{QString temp = QString::fromLocal8Bit(str.c_str());std::string ret = temp.toUtf8().data();return ret;
}std::string UTF82GBK(std::string &str)
{QString temp = QString::fromUtf8(str.c_str());std::string ret = temp.toLocal8Bit().data();return ret;
}
String字符串编码格式转换(UTF8/GBK)相关推荐
- golang string 字符串 大小写转换
package mainimport ("fmt""strings" )/* 1.func Title(s string) string 将字符串s每个单词首字 ...
- Java字符串编码转换UTF-8
import java.io.UnsupportedEncodingException; /** * * * 描述:<p> 功能描述,该部分必须以中文句号结尾.</p> * 创 ...
- c语言字符串如何转换成gbk,C语言实现GBK/GB2312/五大码之间的转换(转)
//--------------------------------------------------------------------------- // 大五码Big5转GBK码: void ...
- Java实现ASCII与String字符串互相转换
将ASCII转成String字符串 @Test public void ASCIIToConvert(){String value = "20320 22909 21568 65281 26 ...
- 中文字符串的编码转换 UTF-8//GBK
golang在处理中文时默认的是utf-8编码,当某些情况下遇到GBK编码或需要GBK编码时,就会出现显示乱码的问题. 1. simplifiedchinese golang官方有针对中文编码转换的包 ...
- python 字符串unicode编码_python的string与Unicode转换,gbk字符串编码
问题一 字串前面少了u. 当遇见以下情况. 返回字符串为'\u82f9\u679c'的unicode时候. str1 = '\u82f9\u679c' # 这里没有u,当传入参数不是unicode的时 ...
- python3 gb2312转utf8_字符编码和python使用encode,decode转换utf-8, gbk, gb2312
python3 爬取网页报错:'gb2312' codec can't decode byte 0xb5 in position 154969: illegal multibyte sequence ...
- android 表情字符串,Android 显示输入法中的emoji表情以及String字符串转码
实现用原生键盘输入表情并显示,有两种办法: 发送时将String字符串转换为Unicode编码字符串,显示接收的列表时用Unicode编码字符串转化为String字符串 发送时将String字符串转换 ...
- Android 显示输入法中的emoji表情以及String字符串转码
Android 显示输入法中的emoji表情以及String字符串转码 实现用原生键盘输入表情并显示,有两种办法: 发送时将String字符串转换为Unicode编码字符串,显示接收的列表时用Unic ...
最新文章
- oracle如何上传图片,js实现上传图片之上传前预览图片
- (转)Hibernate事务管理
- 【问题解决方案】CentOS7替换yum的问题:使用yum makecache出现File contains no section headers
- 天梯—判断素数(C语言)
- 如何下载vSphere Big Data Extensions 1.0免费试用版
- 苹果发布高端头戴式耳机AirPods Max12月15日发售
- Kepserver如何连接InTouch
- 像素图片转矢量图片——从图像中提取曲线信息
- 中国程序员容易发错音的单词「GitHub 热点速览 v.22.23」
- java实现三进制转十进制
- java wgs84 百度坐标_javascript 实现wgs84 坐标转百度坐标
- [十大排序]有的人图画着画着就疯了(1.5w字详细分析+动图+源码)
- 漂亮实用的jQuery倒计时插件特效代码
- 有道云笔记Markdown图片插入居中方法
- ckfinder 2.3 破解
- 美国通胀再创新高,一夜梦回八零年代
- 加解密杂烩程序开发(三)
- Windows系统kratos生成proto代码是报exec: “protoc“: executable file not found in %PATH%错误解决办法
- 论文阅读:DeepDDG:使用神经网络预测蛋白质点突变的稳定性变化
- 轻量级浏览器NetSurf学习(九)-- 如何基于NetSurf打造自己的浏览器