iconv命令用于转换指定文件的编码,默认输出到标准输出设备,亦可指定输出文件。
用法: iconv [选项...] [文件...]
选项如下:
输入/输出格式规范:
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码
信息:
-l, --list 列举所有已知的字符集
输出控制:
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息
-?, --help 给出该系统求助列表
--usage 给出简要的用法信息
-V, --version 打印程序版本号
示例:
iconv -t utf-8 -f gb2312 a.txt >b.txt
这个命令读取a.txt文件,从gb2312编码转换为utf-8编码,其输出定向到b.txt文件,这个文件的中文就可以用vi在linux中正常显示。
windows下的文本文件的换行符都是<LF><CR>(0x0d 0x0a),在linux下换行符是<LF>(0x0a)。用以下命令可以看出两者的差别(od命令用来显示文件的存储二进制值):
od -t x1 code_on_windows.c > code_on_windows
od -t x1 code_on_linux.c > code_on_linux
打开code_on_windows和code_on_linux对比各自的行尾字符值就知道了。
正因为这个不同,一些代码文件转到linux下会出现未知行尾字符的错误(行尾的^M)。其实只要我们把这些多余的<CR>去掉,编译就不会报错。可以自己写个小程序读这个文件把值等于0x0d的字符去掉。其实在linux下有个命令叫dos2unix就是干这活。运行如下命令:
dos2unix code_on_windows.c
就可以把code_on_windows.c转成linux下的文件。
用法: iconv [选项...] [文件...]
选项如下:
输入/输出格式规范:
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码
信息:
-l, --list 列举所有已知的字符集
输出控制:
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息
-?, --help 给出该系统求助列表
--usage 给出简要的用法信息
-V, --version 打印程序版本号
示例:
iconv -t utf-8 -f gb2312 a.txt >b.txt
这个命令读取a.txt文件,从gb2312编码转换为utf-8编码,其输出定向到b.txt文件,这个文件的中文就可以用vi在linux中正常显示。
windows下的文本文件的换行符都是<LF><CR>(0x0d 0x0a),在linux下换行符是<LF>(0x0a)。用以下命令可以看出两者的差别(od命令用来显示文件的存储二进制值):
od -t x1 code_on_windows.c > code_on_windows
od -t x1 code_on_linux.c > code_on_linux
打开code_on_windows和code_on_linux对比各自的行尾字符值就知道了。
正因为这个不同,一些代码文件转到linux下会出现未知行尾字符的错误(行尾的^M)。其实只要我们把这些多余的<CR>去掉,编译就不会报错。可以自己写个小程序读这个文件把值等于0x0d的字符去掉。其实在linux下有个命令叫dos2unix就是干这活。运行如下命令:
dos2unix code_on_windows.c
就可以把code_on_windows.c转成linux下的文件。