当我们在使用Window操作系统的时候,可能使用最多的文本格式就是txt了,但是当我们将Window平台下的txt文本文档拷贝到Linux平台下查看时,发现原来的中文全部变成了乱码。没错, 引起这个结果的原因就是两个平台下,编辑器对默认的编码格式是不一样的:

在Window平台下,Notepad的默认编码是ASCII码或者GBK,而在Linux平台下默认的是UTF-8(中文环境的情况),编码的不同导致了原来文档中的中文变成了乱码。

解决办法:
使用iconv命令将文档的编码进行转换即可。

iconv默认情况下,是没有被安装的,下面简单介绍下iconv的安装过程:
1. 下载
http://www.gnu.org/software/libiconv/#TOCdownloading

2. 安装:
下载完成后,切换到下载目录先进行解压:

$tar -xzvf libiconv-1.14.tar.gz

然后进入解压后的文件中

$cd libiconv-1.14_2

查看其中的README文件,我们可以看到安装步骤:(当然,如果您熟悉源码的安装,这步完全可以省略^-^)

$ ./configure --prefix=/usr/local

$ make

$ make install

3. 命令学习
该工具安装完成后,肯定要先了解下这个命令的用法吧,这个没什么可说的:

$iconv --help

我们会看到下面的内容:

Usage: iconv [OPTION...] [FILE...]

Convert encoding of given files from one encoding to another.

 

Input/Output format specification:

-f, --from-code=NAME encoding of original text

-t, --to-code=NAME encoding for output

 

Information:

-l, --list list all known coded character sets

 

Output control:

-c omit invalid characters from output

-o, --output=FILE output file

-s, --silent suppress warnings

--verbose print progress information

 

-?, --help Give this help list

--usage Give a short usage message

-V, --version Print program version

 

Mandatory or optional arguments to long options are also mandatory or optional

for any corresponding short options.

说的很明白,就是按照下面的格式进行转换:
iconv -f 原编码 -t 目标编码 要转换的文件

4. 编码转换:
学会了编码的转化,我们就举了例子示范一下:

$iconv -f gbk -t utf8 test.txt

命令执行完成后,你发现原来test.txt中的中文正常显示了,但是打开原来的文件,却发现还是乱码,这个Easy,我们将输出的内容输入到文件中即可。

$iconv -f gbk -t utf8 test.txt -o test

或者执行下面的命令:

$iconv -f gbk -t utf8 test.txt < test

此时我们打开这个test文件就会发现,原来的中文显示正常了^-^

注意:
如果不出意外的话,上面的安装步骤可没有那么顺利,在make的时候,会提示下面的错误:

n file included from progname.c:26:0:

./stdio.h:1010:1: error: 'gets' undeclared here (not in a function)

_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

^

make[2]: *** [progname.o] Error 1

make[2]: Leaving directory `/home/freeman/Downloads/libiconv-1.14_2/srclib'

make[1]: *** [all] Error 2

make[1]: Leaving directory `/home/freeman/Downloads/libiconv-1.14_2/srclib'

make: *** [all] Error 2

这个这个软件本身存在的一个Bug,通过Google,发现一个解决该问题的补丁,内容如下:

--- srclib/stdio.in.h.orig 2011-08-07 16:42:06.000000000 +0300

+++ srclib/stdio.in.h 2013-01-10 15:53:03.000000000 +0200

@@ -695,7 +695,9 @@

/* It is very rare that the developer ever has full control of stdin,

so any use of gets warrants an unconditional warning. Assume it is

always declared, since it is required by C89. */

-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)

+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

+#endif

#endif

PS:内容中的"+"表示新增的内容,"-"表示删除的内容!

那我们只要进行如下操作即可解决这个问题:
1. 切换到srclib目录下:

$cd srclib

2. 修改stdio.in.h文件:

$gedit stdio.in.h

通过搜索,定位到_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");这一行,然后在这一行的前后加上条件编译即可,修改后的内容如下:

#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)

_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

#endif

3. 保存退出,然后再进行make, make install便可顺利安装^-^

Iconv作用以及安装问题解决的更多相关文章

  1. SharePoint 2013必备组件离线包安装:AppFabric无法安装问题解决

    由于没有网络,无法使用sharepoint2013的安装必备软件的在线下载向导安装,当要安装 SharePoint 2013 的服务器与 Internet 隔离时,通常需要从脱机位置安装必备组件.即使 ...

  2. mysql学习-windows下绿色版mysql安装问题解决办法

    1.下载绿色版mysql 从该地址http://dev.mysql.com/downloads/mysql/ 中选择windows的版本,选择下载. 2.将下载的压缩包解压. 3.将根目录下的my-d ...

  3. LabVIEW之安装队列工具包AMC安装问题解决

    LabVIEW之安装队列工具包AMC安装问题解决--VIPM无法连接LabVIEW 彭会锋 参考资料: http://www.labviewpro.net/forum_post_detail.php? ...

  4. Xmind pro Win10系统下安装问题解决与破解

    Xmind pro Win10系统下安装问题解决与破解 1.下载安装版本 解压包含文件: xmind-8-update7-windows--安装包 和XMindCrack.jar--激活破解工具 2. ...

  5. SQL server 2008 安装问题解决

    安装sqlserver2008 出现的一些问题解决方法 1,安装sqlserver的时候出现如下图所示,解决办法是:开始→运行→输入“regedit”→找到“HKEY_LOCAL_MACHINE\SY ...

  6. extract-text-webpack-plugin 作用、安装、使用

    作用:该插件的主要是为了抽离css样式,防止将样式打包在js中引起页面样式加载错乱的现象 安装:插件安装命令如下: npm install extract-text-webpack-plugin -- ...

  7. 转:configure/make/make install的作用 linux 安装 卸载 make uninstall

    这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤. ./configure 是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不是需要CC或GC ...

  8. composer.phar的作用和安装laravel5.5.4 和 vendor目录

    composer.phar有什么作用 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖 ...

  9. SQL server 2008 安装问题解决 转

    http://www.cnblogs.com/Hackerman/p/4472811.html   安装sqlserver2008 出现的一些问题解决方法 1,安装sqlserver的时候出现如下图所 ...

随机推荐

  1. java调用数据库中的函数和存储过程

    1.调用函数 {?= call <procedure-name>[(<arg1>,<arg2>, ...)]} {call <procedure-name&g ...

  2. Array.prototype.includes

    if (!Array.prototype.includes) {   Array.prototype.includes = function(searchElement /*, fromIndex*/ ...

  3. Windows下Nginx的启动、停止、重启等命令

    Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍. 假设 ...

  4. jsoncpp解析非json串

    转自:https://www.cnblogs.com/huojing/articles/5927488.html 由于Jsoncpp解析非法json时,会自动容错成字符类型.对字符类型取下标时,会触发 ...

  5. KVM操作命令

    1.查看KVM虚拟机配置文件 Kvm虚机创建 例子 /home/work/kvm-host一下操作目录 qemu-img create -f qcow2 test-Ws.qcow2 10G Test- ...

  6. BFS+打印路径

    题目是给你起点sx,和终点gx:牛在起点可以进行下面两个操作: 步行:John花一分钟由任意点X移动到点X-1或点X+1. 瞬移:John花一分钟由任意点X移动到点2*X. 你要输出最短步数及打印路径 ...

  7. B bearBaby loves sleeping

    链接:https://ac.nowcoder.com/acm/contest/338/B来源:牛客网 题目描述 Sleeping is a favorite of little bearBaby, b ...

  8. Jmeter JAVA请求入门

    一.Jmeter完成一个java请求实现方法 两种实现方式: 实现JavaSamplerClient接口 继承AbstractJavaSamplerClient抽象类 二.使用AbstractJava ...

  9. 搭建阿里云服务器(centos,jdk和Tomcat版本)

    1.购买服务器(登录阿里云,购买服务器,并进入控制台,查看自己的服务器实例 2.域名注册(这步可以省略,直接IP地址访问,因为域名需要备案),购买域名的需要进行解析以及绑定自己的服务器 3.可以准备一 ...

  10. iviewUI框架,使用table表格内render下拉框select被遮盖问题

    使用props:{  transfer:true },即可   1.原本代码: