Mac OS X下各种文件编码的转换方法
何曾几时本猫还在windows下编码的时候,那时ruby的源代码的编码格式都是gbk啊!导致N多中文显示为乱码。后来无奈写了个转换代码从gbk编码转为utf-8格式的小工具:
#!/usr/bin/ruby
#tool 4 gbk encoding to utf8 src_path = $*[0]
unless src_pathputs "usage #{$0[2..-1]} gbk_file"exit 1
enddir_name,base_name = File.split(src_path)
dst_path = dir_name << '/u8_' << base_name
f_src = File.open(src_path,"r:gbk")
f_dst = File.open(dst_path,"w:utf-8")f_src.each_with_index do |line,i|line.encode!("utf-8")if(i < 2)#line.gsub!(/gbk/,"utf-8") if(line =~ /^#[ ]*coding*/)line.gsub!(/gbk/,"utf-8") if(line =~ /^*coding*/)endf_dst.puts line
endf_src.close
f_dst.close
`chmod +x #{dst_path}`
再后来发现mac系统下自带iconv这个好东东啊:
ICONV(1) Linux Programmer's Manual ICONV(1)
NAME
iconv - character set conversion
SYNOPSIS
iconv [OPTION...] [-f encoding] [-t encoding] [inputfile ...]
iconv -l
DESCRIPTION
The iconv program converts text from one encoding to another encoding.
More precisely, it converts from the encoding given for the -f option
to the encoding given for the -t option. Either of these encodings
defaults to the encoding of the current locale. All the inputfiles are
read and converted in turn; if no inputfile is given, the standard
input is used. The converted text is printed to standard output.
The encodings permitted are system dependent. For the libiconv imple-
mentation, they are listed in the iconv_open(3) manual page.
Options controlling the input and output format:
-f encoding, --from-code=encoding
我们来试一下,创建一个utf-8格式的文本:
路人甲:最近又多学了德语,现在懂中文,英语和德语啊
猫猫:靠,我早精通十几门语言了
路人甲:擦,我才不信
猫猫:汇编语言,C语言,C++语言,C#语言,ruby语言,javascript语言...
路人甲:...
用iconv转换为gbk格式(或者反向转换也可以):
apple@kissAir: ruby_src$iconv -f UTF-8 -t GBK ex_u8.txt > ex_gbk.txt
apple@kissAir: ruby_src$cat ex_gbk.txt
·?˼?:????ֶ?ѧ?˵?????ڶ????ģ?Ӣ??͵??ﰡ
èè?????????羫ͨʮ??????????
·?˼ף??????ҲŲ???
èè?????????,C????,C++???ԣ?C#????,ruby????,javascript????...
·?˼?:...apple@kissAir: ruby_src$
我们可以看一下iconv到底支持多少种编码格式,貌似是超多的啊:
apple@kissAir: ruby_src$iconv -l
ANSI_X3.4-1968 ANSI_X3.4-1986 ASCII CP367 IBM367 ISO-IR-6 ISO646-US ISO_646.IRV:1991 US US-ASCII CSASCII
UTF-8
UTF-8-MAC UTF8-MAC
ISO-10646-UCS-2 UCS-2 CSUNICODE
UCS-2BE UNICODE-1-1 UNICODEBIG CSUNICODE11
UCS-2LE UNICODELITTLE
ISO-10646-UCS-4 UCS-4 CSUCS4
UCS-4BE
UCS-4LE
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7
UCS-2-INTERNAL
UCS-2-SWAPPED
UCS-4-INTERNAL
UCS-4-SWAPPED
C99
JAVA
CP819 IBM819 ISO-8859-1 ISO-IR-100 ISO8859-1 ISO_8859-1 ISO_8859-1:1987 L1 LATIN1 CSISOLATIN1
ISO-8859-2 ISO-IR-101 ISO8859-2 ISO_8859-2 ISO_8859-2:1987 L2 LATIN2 CSISOLATIN2
ISO-8859-3 ISO-IR-109 ISO8859-3 ISO_8859-3 ISO_8859-3:1988 L3 LATIN3 CSISOLATIN3
ISO-8859-4 ISO-IR-110 ISO8859-4 ISO_8859-4 ISO_8859-4:1988 L4 LATIN4 CSISOLATIN4
CYRILLIC ISO-8859-5 ISO-IR-144 ISO8859-5 ISO_8859-5 ISO_8859-5:1988 CSISOLATINCYRILLIC
ARABIC ASMO-708 ECMA-114 ISO-8859-6 ISO-IR-127 ISO8859-6 ISO_8859-6 ISO_8859-6:1987 CSISOLATINARABIC
ECMA-118 ELOT_928 GREEK GREEK8 ISO-8859-7 ISO-IR-126 ISO8859-7 ISO_8859-7 ISO_8859-7:1987 ISO_8859-7:2003 CSISOLATINGREEK
HEBREW ISO-8859-8 ISO-IR-138 ISO8859-8 ISO_8859-8 ISO_8859-8:1988 CSISOLATINHEBREW
ISO-8859-9 ISO-IR-148 ISO8859-9 ISO_8859-9 ISO_8859-9:1989 L5 LATIN5 CSISOLATIN5
ISO-8859-10 ISO-IR-157 ISO8859-10 ISO_8859-10 ISO_8859-10:1992 L6 LATIN6 CSISOLATIN6
ISO-8859-11 ISO8859-11 ISO_8859-11
ISO-8859-13 ISO-IR-179 ISO8859-13 ISO_8859-13 L7 LATIN7
ISO-8859-14 ISO-CELTIC ISO-IR-199 ISO8859-14 ISO_8859-14 ISO_8859-14:1998 L8 LATIN8
ISO-8859-15 ISO-IR-203 ISO8859-15 ISO_8859-15 ISO_8859-15:1998 LATIN-9
ISO-8859-16 ISO-IR-226 ISO8859-16 ISO_8859-16 ISO_8859-16:2001 L10 LATIN10
KOI8-R CSKOI8R
KOI8-U
KOI8-RU
CP1250 MS-EE WINDOWS-1250
CP1251 MS-CYRL WINDOWS-1251
CP1252 MS-ANSI WINDOWS-1252
CP1253 MS-GREEK WINDOWS-1253
CP1254 MS-TURK WINDOWS-1254
CP1255 MS-HEBR WINDOWS-1255
CP1256 MS-ARAB WINDOWS-1256
CP1257 WINBALTRIM WINDOWS-1257
CP1258 WINDOWS-1258
850 CP850 IBM850 CSPC850MULTILINGUAL
862 CP862 IBM862 CSPC862LATINHEBREW
866 CP866 IBM866 CSIBM866
CP1131
MAC MACINTOSH MACROMAN CSMACINTOSH
MACCENTRALEUROPE
MACICELAND
MACCROATIAN
MACROMANIA
MACCYRILLIC
MACUKRAINE
MACGREEK
MACTURKISH
MACHEBREW
MACARABIC
MACTHAI
HP-ROMAN8 R8 ROMAN8 CSHPROMAN8
NEXTSTEP
ARMSCII-8
GEORGIAN-ACADEMY
GEORGIAN-PS
KOI8-T
CP154 CYRILLIC-ASIAN PT154 PTCP154 CSPTCP154
KZ-1048 RK1048 STRK1048-2002 CSKZ1048
MULELAO-1
CP1133 IBM-CP1133
ISO-IR-166 TIS-620 TIS620 TIS620-0 TIS620.2529-1 TIS620.2533-0 TIS620.2533-1
CP874 WINDOWS-874
VISCII VISCII1.1-1 CSVISCII
TCVN TCVN-5712 TCVN5712-1 TCVN5712-1:1993
ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO
JISX0201-1976 JIS_X0201 X0201 CSHALFWIDTHKATAKANA
ISO-IR-87 JIS0208 JIS_C6226-1983 JIS_X0208 JIS_X0208-1983 JIS_X0208-1990 X0208 CSISO87JISX0208
ISO-IR-159 JIS_X0212 JIS_X0212-1990 JIS_X0212.1990-0 X0212 CSISO159JISX02121990
CN GB_1988-80 ISO-IR-57 ISO646-CN CSISO57GB1988
CHINESE GB_2312-80 ISO-IR-58 CSISO58GB231280
CN-GB-ISOIR165 ISO-IR-165
ISO-IR-149 KOREAN KSC_5601 KS_C_5601-1987 KS_C_5601-1989 CSKSC56011987
EUC-JP EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE
MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS
CP932
ISO-2022-JP CSISO2022JP
ISO-2022-JP-1
ISO-2022-JP-2 CSISO2022JP2
CN-GB EUC-CN EUCCN GB2312 CSGB2312
GBK
CP936 MS936 WINDOWS-936
GB18030
ISO-2022-CN CSISO2022CN
ISO-2022-CN-EXT
HZ HZ-GB-2312
EUC-TW EUCTW CSEUCTW
BIG-5 BIG-FIVE BIG5 BIGFIVE CN-BIG5 CSBIG5
CP950
BIG5-HKSCS:1999
BIG5-HKSCS:2001
BIG5-HKSCS:2004
BIG5-HKSCS BIG5-HKSCS:2008 BIG5HKSCS
EUC-KR EUCKR CSEUCKR
CP949 UHC
CP1361 JOHAB
ISO-2022-KR CSISO2022KR
CP856
CP922
CP943
CP1046
CP1124
CP1129
CP1161 IBM-1161 IBM1161 CSIBM1161
CP1162 IBM-1162 IBM1162 CSIBM1162
CP1163 IBM-1163 IBM1163 CSIBM1163
DEC-KANJI
DEC-HANYU
437 CP437 IBM437 CSPC8CODEPAGE437
CP737
CP775 IBM775 CSPC775BALTIC
852 CP852 IBM852 CSPCP852
CP853
855 CP855 IBM855 CSIBM855
857 CP857 IBM857 CSIBM857
CP858
860 CP860 IBM860 CSIBM860
861 CP-IS CP861 IBM861 CSIBM861
863 CP863 IBM863 CSIBM863
CP864 IBM864 CSIBM864
865 CP865 IBM865 CSIBM865
869 CP-GR CP869 IBM869 CSIBM869
CP1125
EUC-JIS-2004 EUC-JISX0213
SHIFT_JIS-2004 SHIFT_JISX0213
ISO-2022-JP-2004 ISO-2022-JP-3
BIG5-2003
ISO-IR-230 TDS565
ATARI ATARIST
RISCOS-LATIN1
最后说点题外话,夸一下UNIX系统的整体性和统一性,这种统一性带来学习成本的急剧下降,而且让人很有成就感。比如我在ruby中知道正则表达式最后加i表示忽略大小写,我有次用grep查找的时候发觉也要忽略大小写查找,你猜猜我用神马选项:grep -i xxx,就是这么统一,这么和谐。windows下可以吗?哦,对了windows下人家不玩console,人家都玩窗口...
Mac OS X下各种文件编码的转换方法相关推荐
- Mac OS X 下 TAR.GZ 方式安装 MySQL
Mac OS X 下 TAR.GZ 方式安装 MySQL 注意: 本篇文章适用与 MySQL 5.6 版本的安装, 但已不再适用 5.7 的安装, 5.7 的安装方式请参见:<Mac OS X ...
- Mac OS X 下 TAR.GZ 方式安装 MySQL5.6
为什么80%的码农都做不了架构师?>>> Mac OS X 下 TAR.GZ 方式安装 MySQL 注意: 本篇文章适用与 MySQL 5.6 版本的安装, 但已不再适用 5. ...
- Mac OS X下的动态链接库
动态链接库已成为现代操作系统的基本组成部分,比如Windows下数不清的.DLL文件和 臭名昭著的DLL地狱,Linux下成千上万的.so文件.Mac OS X下也有许多动态链接库, 他们的扩展名是. ...
- Mac OS X下删除或添加鼠标右键菜单项目及清除Mac OS右键菜单重复项
一.Mac OS X下删除或添加鼠标右键菜单项目 1. 打开 Finder,点击屏幕顶部菜单栏的 "前往",在下拉菜单里选择 "前往文件夹-" 2. 在弹出的输 ...
- Mac OS系统下制作ISO映像方法
Mac OS系统下制作ISO映像方法 打开启动台,选择其他,打开运行磁盘工具 制作cdr文件 有.dmg文件 菜单栏选择映像-转换,选取dmg文件,映像格式选择"DVD/CD主映像" ...
- linux下查看文件编码及修改编码
linux下查看文件编码及修改编码 查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式. 如果 ...
- Mac OS X 下连接CMCC无法弹出登陆页面问题
一般情况下连接中国移动CMCC等其他无线网络的时候,会弹出一个登陆界面,让用户输入账户和密码,然后就可以登陆联网.但是部分童鞋会遇到这样情况:在Mac OS X下连上CMCC的时候无法弹出登陆界面(w ...
- 在Mac OS环境下安装MySQL服务
在Mac OS环境下安装MySQL服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我之前介绍过window环境下安装mysql服务,以及在Linux环境下安装mysql服务,今 ...
- 桂电在linux、Mac OS环境下使用出校器(支持2.14)
这是guetsec学长在三院科协学长所抓包逆向分析1.81版出校器的基础上,用python写的一款为Mac和linux环境开发的出校器. 最后我做了略微修改,支持暂时最新版本2.14.下面有直接从源码 ...
最新文章
- 为什么要放弃 Lombok ?
- deepin中mysql数据库的连接_Python爬虫进阶教程(八):MySQL 数据库连接
- GDCM:读取和打印DICOM的属性的测试程序
- VTK:网格之BoundaryEdges
- 技术干货 | jsAPI 方式下的导航栏的动态化修改
- 仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器,适配了iOS6-10系统,3行代码即可集成....
- android网络通信之HTTP协议教程实例汇总
- SharePoint自动化系列——创建MMS terms
- 详解python输出语句print
- VMware Workstation 8.0 序列号
- 全外显子测序助力疾病诊疗
- dell计算机的硬盘如何分区,戴尔电脑分盘怎么分区
- 基于R语言的量表网络分析笔记
- IPv6进阶:IPv6 过渡技术之 NAT64(IPv4 节点主动访问 IPv6 节点)
- 0xbc指令 st75256_st75256 - 涂Sir的个人空间 - OSCHINA - 中文开源技术交流社区
- PDF用什么软件可以修改
- 基于室内定位技术的化工厂人员定位系统--化工厂定位--新导智能
- Base64格式文字解密,加密
- SQL入门之第二讲——创建数据库
- 舆情监测系统对企业有什么作用,企业如何监测网络舆情危机?
热门文章
- 熵编码(算术+霍夫曼)编解码基础知识总结
- pythonic风格_函数式编程的pythonic风格
- 在EF中执行SQL语句
- html为什么标题只有六级,HTML常用标签
- Photoshop之Cutterman一键切图插件的安装及使用说明
- java.lang.NumberFormatException 异常 int value overflow :int值溢出
- 鸿蒙系统手机魅族,华为鸿蒙系统手机进展顺利 魅族OPPO或将加入
- moviepy音视频剪辑:与time时间线相关的变换函数freeze_region、make_loopable、speedx、time_mirror、time_symmetrize介绍
- 适合学生党的平价蓝牙耳机有哪些?2022年降噪蓝牙耳机推荐
- 手机cpu缓冲区大小怎么设置_手机怎么设置dns 手机设置dns方法【详解】