UTF8与GBK、GB2312等其他字符编码的相互转换
utf8与其他字符编码的转换是国际化必然遇到的问题。
windows的api函数对:
WideCharToMultiByte和MultiByteToWideChar
个人喜欢的跨平台库:
单纯做字符编码转换的iconv
有准标准之称的boost中locale::conv。
示例代码:
iconv字符编码转换: bool gbk2utf8(const char* src, char* dest, size_t inlen)
{
const char* inbuf = src;
size_t outlen = inlen * ;
char* outbuf = dest;
memset(outbuf, , outlen);
iconv_t cd = iconv_open("UTF-8", "GBK");
size_t res = iconv(cd, &inbuf, &inlen, &outbuf, &outlen);
iconv_close(cd);
return ( == res) ? true : false;
}
boost字符编码转换 #include <boost/locale.hpp> boost::locale::conv::from_utf(utf8_text, "GB2312");
windows api的优缺点就不说了,谁用谁知道。
iconv是单独库,编译方便,使用稍显麻烦。
boost是个大库,编译稍显复杂,使用极其方便,除非目标平台不支持,一般建议使用。
至于boost和iconv的支持字符编码差异,暂未进行比较,有需要的请查看两者的文档。
UTF8与GBK、GB2312等其他字符编码的相互转换的更多相关文章
- 编码知识梳理(UTF-8, Unicode, GBK, X509, ANSI, VIM中编码)
编码小结 1 初识编码 所谓编码,是信息从一种形式或格式转换为另一种形式的过程. 字符编码,从自然语言的字符的一个集合(如字母表或音节表),到其他东西的一个集合(如号码或电脉冲)的映射 ANSI:wi ...
- Java 字符转码之UTF-8转为GBK/GB2312
java跟python类似的做法,在java中字符串的编码是java修改过的一种Unicode编码,所以看到java中的字符串,心理要默念这个东西是java修改过的一种Unicode编码的编码. pa ...
- 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
- JAVA字符编码一:Unicode,GBK,GB2312,UTF-8概念基础
第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础 来源:holen'blog 对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16, ...
- 字符编码之间的转换 utf-8 , gbk等,(解决中文字符串乱码)
目录 1.背景. 2.编码的理解 3.编码之间的相互转化 4. str类型说明 5. 可以使用的编码类型 6.参考文章 1.背景 Python中与其他程序进行交互时,如果存在字符串交互,特别是字符串中 ...
- Unicode,GBK,GB2312,UTF-8概念基础(转载)
第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础本部分采用重用,转载一篇文章来完成这部分的目标.来源:holen'blog 对字符编码与Unicode,IS ...
- python成长之路【第五篇】:python字符编码
在2.7环境中我们要写上这一行#-*- coding:utf-8 -*- 为什么我们要加这一行呢?这一样的意思是置顶编码类型为utf-8编码! 首先在看这个问题之前,咱们是否曾想过一个问题? 为什么我 ...
- PHP字符编码问题-总结
今天在网上看到一个人的对于php开发中字符编码的总结,感觉不错,摘录如下: 一,php编码转换 1.通过iconv()函数实现编码转换 语法:iconv(s ...
- mysqli字符编码
mysqli 字符编码: 汉字编码: 1.gbk 最久的编码格式,不能写繁体: 2.国内的gb2312: 3.国际的标准:utf-8; 查看数据库的字符编码: show variables like ...
随机推荐
- spring事务管理学习
spring事务管理学习 spring的事务管理和mysql自己的事务之间的区别 参考很好介绍事务异常回滚的文章 MyBatis+Spring 事务管理 spring中的事务回滚例子 这篇文章讲解了@ ...
- Two ways to create file using 'doc'.
Here are two ways to create file using 'doc' command: Method i: copy con [file name][enter key] [con ...
- 分离数据库(Detach database).
Many times, we often needs to detach our databases if we want to copy it to another database instanc ...
- maven常见命令总结
1.maven vm配置 -Xms512m -Xmx1024m -XX:PermSize=256m 2.启动tomcat clean package -Dpackage.environment=de ...
- 推荐Asp.net WebApi入门教程
Web API 强势入门指南; Web API 入门指南 - 闲话安全; 实例快速上手 -ASP.NET 4.5新特性WebAPI从入门到精通; Asp.net WebApi 项目示例(增删改查).
- Scrum教练不应兼任product owner
ScrumMasters Should Not Also Be Product Owners(中文翻译) December 2, 2014 by Mike Cohn 翻译:2015.2.18 by o ...
- Notification和KVO有什么不同
Notification是推送通知,我们可以建立一个通知中心,存放创建多个通知,在不同的地方在需要的时候push调用和KVO不同的是,KVO是键值观察,只能观察一个值,这就是区别
- 完整的 dataType=text/plain jquery ajax 登录验证
Html: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <m ...
- 升级10.10 Yosemite 后,cocoapods 出现错误(解决方案)
RSMacBook-Pro:~ RS$ pod search jsonkit /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/li ...
- php报警:Strict Standards: Only variables should be passed by reference in
错误原因 因为end函数的原因. end函数: mixed end ( array &$array ) 你可以看到end的参数是一个引用(reference),而你只能把一个变量的引 ...