有许多人在做项目的时候都会遇到字符编码的不一致导致的乱码问题,那如何去解决呢?在Linux系统上可以通过iconv函数族来进行编码转换,但有时候我们并不需要全部的字符集,因为可能会占用比较大的空间,本文主要支持CP437编码格式
库文件下载:https://ftp.gnu.org/pub/gnu/libiconv/

1.下载完成后直接解压

  tar -xvf libiconv-1.15.tar.gz

2.进入目录,编写编译脚本,build.sh

CC=gcc
HOST=
TARGET=
DIR=/root/linux/direcho $DIR./configure CC=$CC  --target=$TARGET --host=$HOST --prefix=$DIR --enable-extra-encodingsmake && make install

上面注意 --enable-extra-encodings是打开扩展字符集
需要根据自己使用场合修改交叉编译链
3.执行脚本进行编译

chmod +x build.sh
./build.sh

4.编译完成后

5.这里执行strip压缩体积

6.我们执行程序看看都包含哪些字符集,可以看到支持了所有的字符,有好多是我们不需要的,下面进行裁剪
该iconv可执行文件依赖上面的库,如果导入arm设备要导入相应的库文件

7.进入lib目录编辑iconv.c文件,屏蔽一些无用代码

//#define USE_AIX
//#define USE_OSF1
#define USE_DOS
//#define USE_EXTRA

首先屏蔽一些宏,然后编译发现还是有一些我们不想要的字符集
8.编辑lib/encodings_dos.def文件删除不需要的字符集,同时删除aliases_dos.h文件的相关定义,最后删除canonical_dos.h中的一些报错就可以了
9.经过strip后这个时候在看就小的多了

再次使用iconv查看支持的字符集就可以了

网上给出的另一种裁剪方法:

libiconv库裁剪

libiconv库简单裁剪支持CP437编码相关推荐

  1. libIconv库实现中文中字符串与GBK、Unicode、UTF-8三种编码互转

    libIconv库实现GBK.Unicode.UTF-8三种编码互转比window api更为简单,而且libIconv库跨平台. IibIconv库在windows下的编译参照windows下使用V ...

  2. java支持库 易语言_易语言支持库简单安装加载添加

    1,首先,准备好欲安装的易语言支持库文件(fne.fnr或lib为后缀名等文件) 2,接下来,有必要对易语言支持库的文件做重要讲解.要安装支持库之前,先要弄明白易语言安装目录下的两个文件夹:lib和s ...

  3. Hisi3516交叉编译ffmpeg支持h264编码

    前言 Hi3516是海思半导体针对高清IPCamera产品应用开发的一款专业高端SOC芯片,具有1080P@30fps H264多码流编码性能.而ffmpeg是众多播放器的底层解.编码库,x264是一 ...

  4. ubuntu libiconv库 arm交叉编译

    libiconv库 交叉编译 libiconv 介绍 1.配置环境及资源 1. 下载交叉编译器 2.下载 libiconv源码 开始编译 libiconv 介绍 libiconv库是一个基于GNU协议 ...

  5. POCO C++库学习和分析 -- 字符编码

    POCO C++库学习和分析 -- 字符编码 1. 字符编码 1.1 字符编码的概念 字符编码可以理解为在计算机上语言符号和二比特数之间的映射.不同的编码方式对应着不同映射方法,对于映射集的双方而言, ...

  6. C++中json解析开源库收集,支持json5

    文章目录 zpl-c 库 HJSON cJSON RapidJSON (推荐) DAW JSON Link v2 JSON ,这库稳定,文档齐全.(推荐) json-c (c实现) json_dto ...

  7. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  8. mysql gbk支持_mysql如何支持gbk编码

    mysql支持gbk编码的方法:首先修改[my.cnf]文件:然后建立库表时指定gbk字符集,代码为[>show cereate table tablename]:最后修改jdbc驱动即可. m ...

  9. Fusion组件库是如何支持多语言能力的

    随着国际化发展,多语言的需求越来越常见,单一的语言已经远不能满足需求了.作为一个组件库,支持多语言也是基本能力. 多语言功能的本质其实是文本的替换,一个词汇"OK",在英文语境下是 ...

最新文章

  1. 《精通Python设计模式》学习结构型之MVC模式
  2. python怎么画心形图案_Python数学方程式画心型图案源码示例
  3. 一个基于xml的超级orm框架-世界是由懒人创造的。
  4. Linux系统初学者指南,观点|Linux 系统调用的初学者指南
  5. 老李分享:持续集成学好jenkins之Git和Maven配置
  6. 20145226夏艺华 JAVA预备作业1
  7. 一文带你弄懂什么是索引二叉堆
  8. 实践—一个3D旋转相册
  9. 服务式GIS实践与发展——REST 服务
  10. 实现统计二叉树叶子节点个数的算法
  11. 用html代码写一个表白语言,HTML写代码表白 – 爱心
  12. JS制作一个简单的网页倒计时器
  13. excel表格打印每页都有表头_excel打印如何每页都有表头 最常用的办公小技巧
  14. yum arm linux gcc 4.8,Linux-使用 yum 升级 gcc 到 4.8
  15. thinkpadE430c加装固态硬盘小记
  16. 职场中为人处世那些事!
  17. 你知道什么是软中断吗?
  18. 西门子S7-200PLC自由口初始化
  19. 从0开始在家使用云GPU服务器
  20. 桌面ie图标不见了【解决办法】

热门文章

  1. oracle32位客户端安装教程,Win7系统32位Oracle11g客户端安装详述
  2. 项目运行报'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 或批处理文件“
  3. bootstrap table 列拖动变宽
  4. 数据库mysql中贴换函数_关于一个自定义MYSQL函数,实现点击链接后,在数据库里改变数据的问题。...
  5. qt中调整弹出框的位置
  6. C语言 va_start / va_end / va_arg 自定义 printf 函数 - C语言零基础入门教程
  7. linux操作系统字段含义,Linux系统 /etc/fstab各个字段含义解释
  8. python多进程队列中的队列_python 多进程队列数据处理详解
  9. java se入门_java SE 入门之运算符(第三篇)
  10. java ora 28040_Oracle 11g与112c中ORA-28040 错误解决