linux转换编码
Ⅰ 如何批量修改linux 文件编码格式
批量转换文件的编码当然是使用命令来转换咯,如果文件太多还可以写一个shell脚本进行批量转换,Linux系统中转换文件编码格式的命令是iconv。iconv命令的使用介绍一下,iconv命令很简单,记住它的三个参数就可以了,下面是它的三个参数:
-f参数:表示from,就是原本的编码格式
-t参数:表示to,就是后来的新编码
-o参数:表示输出文件,就是转换编码后的新文件的文件名,如果没有这个参数新文件会将原来的文件覆盖掉。
下面是将GB2312编码的文件转换成UTF-8编码的例子:
iconv -f gb2312 -t utf8 mygb2312.txt -o myutf8.txt
这个例子中mygb2412.txt就是要转换的文件,myutf8.txt就是转换后的新文件。
Ⅱ 如何在Linux中将文件编码转换为UTF-8
在Linux中转换文件的编码可以使用iconv命令,iconv命令很简单,记住它的三个参数就可以了,下面是它的三个参数: -f参数:表示from,就是原本的编码格式 -t参数:表示to,就是后来的新编码 -o参数:表示输出文件,就是转换编码后的新文件的文件...
Ⅲ linux转换文件编码格式
在 Vim 中直接进行转换文件编码,比如将一个文件转换成 utf-8格式 :set fileencoding=utf-8;
iconv 转换,iconv 的命令格式如下:输入/输出格式规范:iconv -f, --from-code=名称 原始文本编码 -t, --to-code=名称 ,比如说将一个 UTF-8 编码的文件转换成 GBK 编码 iconv -f GBK -t UTF-8 file1 -o file2
enconv 转换文件编码 比如要将一个 GBK 编码的文件转换成 UTF-8编码,操作如下 enconv -L zh_CN -x UTF-8 filename
Ⅳ linux 下如何把URL编码转换
把这个保存成程序,比如
conv.pl:
perl
-e
'$a=<>;$a
=~
s/%([A-Fa-f0-9]{2})/pack('C',hex($1))/seg;
print
$a
.
"\n";
然后这样使用:
chmod
+x
conv.pl
echo
%E5%A5%A5%E8%BF%AA
|
./conv.pl
Ⅳ Linux中如何查看文件编码及对文件进行编码转换
查看文件编码
在Linux中查看文件编码可以通过以下几种方式:
1.在Vim中可以直接查看文件编码
:set fileencoding
即可显示文件编码格式。
如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
~/.vimrc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
文件编码转换
1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set fileencoding=utf-8
2. iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK -t UTF-8 file1 -o file2
iconv -f gbk -t utf8 linux常用命令.txt > linux常用命令.txt.utf8
文件名编码转换:
从Linux 往 windows拷贝文件或者从windows往Linux拷贝文件,有时会出现中文文件名乱码的情况,出现这种问题的原因是因为,windows的文件名 中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致,所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。
在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。
首先看一下你的系统上是否安装了convmv,如果没安装的话用:
yum -y install convmv
安装。
下面看一下convmv的具体用法:
convmv -f 源编码 -t 新编码 [选项] 文件名
常用参数:
-r 递归处理子文件夹
--notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
--list 显示所有支持的编码
--unescap 可以做一下转义,比如把%20变成空格
比如我们有一个utf8编码的文件名,转换成GBK编码,命令如下:
convmv -f UTF-8 -t GBK --notest utf8编码的文件名
这样转换以后"utf8编码的文件名"会被转换成GBK编码(只是文件名编码的转换,文件内容不会发生变化)
Ⅵ 如何在 Linux 中将文件编码转换为 UTF-8
unix下转换文件编码的命令叫做iconv
iconv命令用法如下:
iconv
[选项...]
[文件...]
常用参数
-f,
--from-code=原始文本编码
-t,
--to-code=输出编码
-l,
--list
列举所有已知的字符集
-c
从输出中忽略无效的字符
-o,
--output=file
输出文件
举例:
iconv
-c
-f
gb2312
-t
utf-8
-o
utf8.txt
ansi.txt
Ⅶ linux下怎么改变文件的编码格式
1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set fileencoding=utf-8
2. enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下
enconv -L zh_CN -x UTF-8 filename
3. iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK -t UTF-8 file1 -o file2
查看文件编码file命令
file ip.txt ip.txt: UTF-8 Unicode text, with escape sequences
一、利用iconv命令进行编码转换文件内容编码转换 iconv命令用于转换指定文件的编码,默认输出到标准输出设备,亦可指定输出文件。 用法: iconv [选项...] [文件...] 有如下选项可用: 输入/输出格式规范: -f, --from-code=名称 原始文本编码 -t, --to-code=名称 输出编码 信息: -l, --list 列举所有已知的字符集 输出控制: -c 从输出中忽略无效的字符 -o, --output=FILE 输出文件 -s, --silent 关闭警告 --verbose 打印进度信息 -?, --help 给出该系统求助列表 --usage 给出简要的用法信息 -V, --version 打印程序版本号 例子: iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt 这个命令读取aaa.txt文件,从utf-8编码转换为gb2312编码,其输出定向到bbb.txt文件。
Ⅷ 如何在Linux系统实现字符编码转换
Linux下提供了iconv实现这一功能,在Linux
的
shell
环境下,iconv用法如下:
iconv
-f
fromconde
-t
tocode
-f:
指定需要转换的文本编码
-t:
指定目标文本编码
我们也可以用
-l
列举出所有已知的字符编码集合
iconv
-l
具体用法可以通过帮助函数
iconv
--help来详细了解
另外,我们也可以在程序中直接使用该函数实现文本的编码转换
#ifndef
__CODE_CONVERTER
#define
__CODE_CONVERTER
#ifdef
WIN32
#include
<windows.h>
#else
#include
<iconv.h>
#endif
class
CodeConverter
{
private:
#ifndef
WIN32
iconv_t
m_cd;
#endif
const
char*
m_pszFromCode;
const
char*
m_pszToCode;
public:
CodeConverter()
{
m_pszFromCode
=
NULL;
m_pszToCode
=
NULL;
#ifndef
WIN32
m_cd
=
0;
#endif
}
~CodeConverter()
{
#ifndef
WIN32
iconv_close(m_cd);
#endif
}
bool
Initialize(const
char
*pszToCode,
const
char
*pszFromCode);
size_t
Convert(char*
inBuf,
size_t
inBytesLeft,
char*
outBuf,
size_t
outBytesLen);
};
#endif
#include
<string.h>
#include
<stdlib.h>
#include
<stdio.h>
#include
"code_converter.h"
#include
<errno.h>
bool
CodeConverter::Initialize(const
char*
pszToCode,
const
char*
pszFromCode)
{
if(pszFromCode
==
NULL
||
pszToCode
==
NULL)
return
false;
m_pszFromCode
=
pszFromCode;
m_pszToCode
=
pszToCode;
#ifndef
WIN32
m_cd
=
iconv_open(m_pszToCode,m_pszFromCode);
if(m_cd
==
(iconv_t)-1)
{
printf("cannot
open
iconv
descripter\n");
return
false;
}
#endif
return
true;
}
size_t
CodeConverter::
Convert(char*
inBuf,
size_t
inBytesLeft,
char*
outBuf,
size_t
outBytesLen)
{
int
nRealLen
=
0;
#ifdef
WIN32
if(stricmp(m_pszFromCode,"UNICODE")
==
0)
{
nRealLen
=
WideCharToMultiByte(CP_ACP,0,(PWCHAR)inBuf,
inBytesLeft,
(PCHAR)outBuf,
outBytesLen,NULL,NULL);
}
if(stricmp(m_pszFromCode,"gb2312")
==
0)
{
nRealLen
=
MultiByteToWideChar(CP_ACP,0,(PCHAR)inBuf,inBytesLeft,(PWCHAR)outBuf,
outBytesLen);
}
#else
size_t
outBytesLeft
=
outBytesLen;
size_t
ret
=
0;
while
(1)
{
ret
=
iconv(m_cd,
&inBuf,
&inBytesLeft,
&outBuf,
&outBytesLeft);
if
(ret
==
0)
break;
if
(ret
==
(size_t)-1)
{
printf("iconv
error
aaa:
%s\n",strerror(errno));
return
-1;
}
inBuf++;
inBytesLeft--;
}
nRealLen
=
outBytesLen-outBytesLeft;
outBuf[nRealLen]=0;
#endif
return
nRealLen;
}