zoukankan      html  css  js  c++  java
  • 利用VS编译libiconv库

    参考文章: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

  • 相关阅读:
    福大软工1816 · 第五次作业
    团队编程
    结队第一次作业
    词频统计 ——Java
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    2018软工实践第七次作业——需求报告分析
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    2018软工实践第六次作业——团队选题报告
  • 原文地址:https://www.cnblogs.com/tangxin-blog/p/5608751.html
Copyright © 2011-2022 走看看