在工程中需要进行多字节到wchar_t的转换,windows下MultiByteToWideChar和WideCharToMultiByte已经足够好用。但是在linux和mac下没有这些api,我们的替代方案:1、mbs2wcs
wcs2mbs,这两个c的库函数其实内部也就是对刚刚windows的api和接下来我们要说的iconv的封装。使用时要注意,如果涉及到中文,要先setlocale,当设置好正确的locale,函数内部才能找到正确的字符集进行转换。但是我很悲剧的,无论试过多少参数,都没有办法正确的转换。
于是就有了2号方案,直接使用iconv进行编码转换。
这个库使用很简单,使用举例:
虽然使用很简单,但是在mac下,尝试了一天依然无法成功转换中文(gb18030------wchar_t),当时工程用的是mac操作系统提供的动态库版本iconv,一怒之下动了直接把iconv代码加入到工程中的念头。就算失败,我也好断点调试一下,哪里失败了,不至于像现在这样失败的不明不白。
作为我们在程序中使用这三个函数其实只需要两个c文件, libiconv-1.13.1/libcharset/lib/localcharset.c和libiconv-1.13.1/lib/iconv.c
把这两个文件加到工程中,依赖哪些头文件处理下,有哪些编不过的处理下(无非就是缺少些#define xxxx)。
在mac xcode和vs2010下测试没问题。
接下来考虑要做的:由于iconv并不保证转换必然成功,如果失败就直接返回了,所以可以考虑做个封装,以使其使用更方便。
分享到:
相关推荐
Android NDK使用Iconv进行编码转换,可以在Unicode、GBK、UTF-8之前互转
iconv 转换字符 编码转换 utf8 gbk unicode
iconv 可以转换大文件编码转换,不产生乱码。里面有个简单的转码教程,更多功能需要自己挖掘
win_iconv - 编码转换工具,下载后解压,复制iconv.exe到C:\Windows\System32,即可使用。
iconv是知名的开源跨平台编码转换库,iconv.exe是iconv库在windows下的命令行工具,iconv.exe的一般用法:iconv.exe -f gbk -t utf-8 gbk.txt > utf-8.txt。其中 -f gbk 指明转换前的文件编码是gbk,-t utf-8 指明...
通过iconv库函数,对中文编码进行转换
iconv函数很强大,可以windows不带这个东西,不知道哪位大神在win下重写了iconv,很好很强大,内附使用示例
使icon.lib实现编码转换
在Linux下有个iconv.h头文件,里面是对编码转换处理的封装。但在windows下是没有这个头文件的。这里有三个文件,高手编写,用在windows下:iconv.h,iconv.dll和iconv.lib,导出库,就可以用iconv.h了。用法与Linux下...
iconv-lite - 纯javascript转换字符编码
iconv编码转码工具
windows版 具体用法: -f From CodePage 源编码 -t To Codepage 目标编码 -s SubDirectory 递归检索子目录 -v Verbose 显示转化日志 eg: iconv *.txt -p .\ -f gb2312 -t utf-8 -v -s
gcc编译,内含已经编译好的32位和64位iconv。版本是1.16。 用Visual Studio IDE环境开发者要调用gcc的库需要用LoadLibrary GetProcAddress载入函数。
例://把 从gb2312编码转换到 UTF-8 编码=iconv("GB2312","UTF-8",)安装到PHP要使用iconv函数,PHP编译时必须跟上: --with-iconv[=DIR]. Note to Windows® Users: In order to enable this ...
iconv字符集转换库
StringEncodings.jl:使用iconv在Julia中进行字符串编码转换
易语言iconv.fne支持库中文名为易语言编码转换支持库,本易语言支持库在转换编码时使用 GNU libiconv 1.9.1版,支持现有绝大多数编码和字符集。易语言iconv.fne支持库为一般支持库,需要易系统3.7版本的支持,需要...
Iconv函数进行字符集转换..............