参考文章:http://blog.csdn.net/ghevinn/article/details/9834119

关于中文字符编码问题,这篇文章里面讲的很详细-->http://www.tuicool.com/articles/yIjiqm

UTF-8编码是用以解决国际上字符的一种多字节编码,是在互联网上使用最广的一种unicode的实现方式。它包含全世界所有国家需要用到的字符,是国际编码,通用性强。一般来说UTF-8可应用于大多数场景,尤其是互联网上,而中文编码主要使用GBK编码,因此这就有了GBK和UTF-8的相互转换需求。在linux平台下 libiconv 库来实现这种转换,参见libiconv 官网:http://www.gnu.org/software/libiconv/

但美中不足的是libiconv 的开发者并没有发布windows下的源码和库,所以要想在windows下使用libiconv 库,必须自己手动把libiconv 移植到windows平台,具体步骤如下:

1->去官网下载libiconv 源码包,本文使用的是libiconv-1.14.tar.gz

2->新建libiconv工程

(1)将下载的库中lib文件夹下的所有文件拷贝到这个文件夹下

(2)将烤入到Iconv文件夹下的config.h.in重命名为config.h

(3)将库中libcharset/lib/localcharset.c文件拷贝到这个文件夹下

(4)将库中include文件夹下iconv.h.in文件重命名为iconv.h放在Iconv文件夹下

3、工程中添加现有项,将 iconv.c ,localcharset.c 添加到工程中.

4、工程属性->C/C++ –>附加包含目录:$(ProjectDir);

5、工程属性:常规->配置类型->静态库(.lib)

6、修改文件中的BUG

(1) iconv.h :

1).删除掉所有的 @ 符号 (14处) 
2).修改25行: extern DLL_VARIABLE int _libiconv_version;

为  extern /*DLL_VARIABLE*/ int _libiconv_version;  
3).修改83行:extern size_t iconv (iconv_t cd, ICONV_CONST char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);

为 extern size_t iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);

(2)localcharset.c:

注释掉76行:  # include "configmake.h"

  468行 :   sprintf  改成   sprintf_s ,参数也要修改,具体怎么改,看了代码一眼就知道 -->sprintf_s(buf, 2 + 10 + 1, "CP%u", GetACP());

7:生成解决方案,可能会报几个警告.

如果你觉得上述过程很麻烦,这里有现成VS2013工程,可以直接编译:http://download.csdn.net/detail/tangxin19930330/9556870

利用VS编译libiconv库的更多相关文章

  1. 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)

    平台:Windows7,Visual C++ 2010 1. 引言 实验室的一个项目,用到OpenGL进行实时绘制,还用到一些其他的库,一个困扰我很久的问题就是编译时遇到的各种符号未定义,符号重定义之 ...

  2. 【转】Android 源码下利用jni编译自己的项目(参考系统development/samples/SimpleJNI)

    原文网址:http://blog.csdn.net/qiuxiaolong007/article/details/7860481 记于正文前:环境是ubuntu10.10,android 源码是2.0 ...

  3. 怎样学习使用libiconv库

    怎样学习使用libiconv库 - My Study My Study About My Learn or Study etc. 怎样学习使用libiconv库 By Cnangel on Febru ...

  4. Windows环境下编译Assimp库生成Android可用的.so或.a文件

    在做项目过程中需要使用Assimp这个3D模型读取库来读取obj格式的模型,因为项目是基于Android平台,采用NDK开发,所以就打算编译Assimp库并生成.so文件.本文使用Assimp-v.5 ...

  5. libiconv库的安装和使用

    1.libiconv包的下载路径 包的下载页面http://www.gnu.org/software/libiconv/ 2.编译安装libiconv库 $tar zxvf libiconv-1.14 ...

  6. Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6

    书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...

  7. ndk学习8: 编译动态库

    目录: 手工编译动态库 ndk-build编译动态库(Eclipse环境)   手工编译静态库 老规矩还是先手工操作,知其然并知其所以然   需要用到的核心命令: gcc -g -c -fpic -W ...

  8. oracle 利用flashback将备库激活为read wirte(10g 及上)

    oracle 利用flashback将备库激活为read wirte(10g 及上) 环境: OS: CENTOS 6.5 X64 DB: ORACLE 10.2.0.5 主库操作: SQL> ...

  9. 编译jsoncpp库以及要注意的问题

    原创文章,转载请注明原作者与本文原始URL. 版本:jsoncpp-src-0.5.0.zip简介:jsoncpp是用cpp实现的json库,可以拼装,解析,生成json串.我们要把他编译成动态库.这 ...

随机推荐

  1. mysql之对视图的操作

    1. 为什么要使用视图? 为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性.所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有 ...

  2. ural 1150. Page Numbers

    1150. Page Numbers Time limit: 1.0 secondMemory limit: 64 MB John Smith has decided to number the pa ...

  3. BZOJ4155 : [Ipsc2015]Humble Captains

    第一问最小割,第二问: 设du[i]表示i点的度数,则要最小化$\frac{|1集合的du[i]之和-2集合的du[i]之和|}{2}$, 压位01背包即可. #include<cstdio&g ...

  4. BZOJ3745 : [Coci2014]Norma

    考虑枚举右端点,用线段树维护[i,nowr]的答案. 当右端点向右延伸时,需要知道它前面第一个比它大/小的数的位置,这里面的最值将发生改变,这个使用单调队列求出,然后将所有的l都加1. 注意常数优化. ...

  5. POJ 3661 (线性DP)

    题目链接: http://poj.org/problem?id=3661 题目大意:牛跑步.有N分钟,M疲劳值.每分钟跑的距离不同.每分钟可以选择跑步或是休息.一旦休息了必须休息到疲劳值为0.0疲劳值 ...

  6. wp7 中 HubTile控件自定义大小。

    http://blog.csdn.net/matrixcl/article/details/7057291 (转) Toolkit(http://silverlight.codeplex.com/)中 ...

  7. u盘文件系统故障的修复方法

    比如U盘挂载的文件系统是/dev/sda1,且文件系统有故障(FAT: Filesystem error) 修复U盘文件系统故障 sudo dosfsck -v -a /dev/sda1

  8. 关于iOS测试机个数上限的详细规则

    关于iOS测试机个数上限的详细规则 前言 公司的iOS测试机快达到苹果规定的100个上限了,而因为the new iPad新出,我们需要新的quota来测试新iPad,所以就仔细研究了一下苹果关于10 ...

  9. Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别

    在C++中,类与类之间的关系大概有四种,分别为继承,关联,聚合,和组合.其中继承我们大家应该都比较熟悉,因为是C++的三大特性继承Inheritance,封装Encapsulation,和多态Poly ...

  10. PixelFormat 像素格式

    enum PixelFormat Pixel formats available for Format7 modes. Enumerator: PIXEL_FORMAT_MONO8  8 bits o ...