Iconv作用以及安装问题解决

当我们在使用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便可顺利安装^-^

时间: 2024-11-13 15:50:42

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

mysql绿色版安装问题解决(ERROR 2003 (HY000): Can&#39;t connect to MySQL server on &#39;localhost&#39; (10061))

原来一直是使用MySQL安装版没有出现过问题,今天在安装绿色版MySQL时出现了点问题 在安装成windows服务成功后,用net start mysql 启动时提示启动成功,但当我连接mysql就报以下错误: ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061) my.ini文件内容: [mysqld]basedir=E://databases//mysqldatadir=F://databases//

mysql windows下绿色版mysql安装问题解决办法

1.安装mysql服务出现Install/Remove of the Service Denied!错误 今天在一台机器(OS为windows7 64bit)上装MySQL5.6.16数据库,看了下机器,之前有安装MySQL,不过没启动服务, 于是就打开cmd.exe输入mysqld --install,谁知出现Install/Remove of the Service Denied! 错误,奇怪. 查了下MySQL相关资料,命令没有敲错,为什么安装服务失败呢,后来仔细一想,哦, 权限不够,我用

CentOS 7 U盘安装问题解决

最近期待以久的CentOS 7正式版终于发布了,在家里无聊,所以就打算在我的小Y上安装一下,由于笔记本原来有安装Windows 7 操作系统,考虑使用的需求,所以决定安装双系统: 1.         下载CentOS-7.0-1406-x86_64-DVD.iso文件. 2.         使用UltraISO制作启动盘,这里要特别说明一下,由于UltraISO在使用64位的Linux操作系统安装文件时只有EFI一个文件夹,所以这里建议先使用Windows自带的工具—资源管理器打开iso文件

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

由于没有网络,无法使用sharepoint2013的安装必备软件的在线下载向导安装,当要安装 SharePoint 2013 的服务器与 Internet 隔离时,通常需要从脱机位置安装必备组件.即使不属于这种情况,从集中脱机位置安装必备组件也可以使您安装已知的受控映像集,从而确保场服务器的一致性.如下图: 必须把SP2013的必备组件全部下载下来,进行离线安装,组件如下: Microsoft .NET Framework 4.5 版 Windows Management Framework 3

必知必会的目录和文件的作用、安装软件方法、运行级别

作者:Georgekai 归档:学习笔记 2017/12/28 目  录 第1章 ctrl+1 1 1.2  /etc/目录 1 1.2.1                   网卡配置文件和DNS配置文件 1.2.2                更改本机hosts文件 1.2.3                修改主机名 1.2.4                开机自动挂载的设备与目录的对应关系 1.2.5                开机自动运行的软件和命令存放位置 1.2.6    

pip install selenium 无法安装问题解决办法

安装 1.安装python 2.cmd中输入:pip install selenium 输入pip show selenium检查是否安装完成 3.下载chromedriver 在浏览器中输入chrome://version/ 检查当前版本 从网上下载对应版本的chromedriver之后,里面的内容仅为一个.exe文件, 下载地址:http://npm.taobao.org/mirrors/chromedriver/将其解压在chrome的安装目录下(C:\Program Files (x86

SQL server 2008 安装问题解决 转

http://www.cnblogs.com/Hackerman/p/4472811.html 安装sqlserver2008 出现的一些问题解决方法 1,安装sqlserver的时候出现如下图所示,解决办法是:开始→运行→输入"regedit"→找到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager"单击该项,右边删除"PendingFileRenameOperatio

在Ubuntu上源码安装MySQL+安装问题解决+安全优化

0.说明 当然,MySQL的安装方法多种多样,在Ubuntu上,你可以采用apt-get的方式安装,这样的好处是:快速方便.基本上,它会帮你解决所有的函数库依赖问题,正常情况下,只要apt-get执行完成,那么MySQL也就可以使用了. 但我更倾向于使用源码的方式来安装MySQL,原因也很简单:除了有详细的官方文档外,你还可以非常清楚地知道你自己在做什么,这点在以后MySQL运行出现问题时将会有很大的帮助! 但即便是按照官方文档来安装,你也会遇到各种各样的问题,这里,我将呈现一个完整的过程给大家

SQL server 2008 安装问题解决

安装sqlserver2008 出现的一些问题解决方法 1,安装sqlserver的时候出现如下图所示,解决办法是:开始→运行→输入“regedit”→找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager”单击该项,右边删除“PendingFileRenameOperations”即可. 2,安装失败,卸载干净sqlserver. 方法:找到“HKEY_LOCAL_MACHINE\SOFTWARE\Micro