ruby Iconv.iconv编码方法
#定义一个UTF-8=>GBK的方法
def encoding inStr
Iconv.iconv("GBK","UTF-8",inStr)
end
#定义一个GBK=>UTF-8的方法
def unencoding inStr
Iconv.iconv("UTF-8","GBK",inStr).join
end
学习参考:http://www.kuqin.com/rubycndocument/man/addlib/Iconv.html#Iconv.2eiconv
Iconv 类
类方法
Iconv.new(to, from)-
生成并返回从from到to的新的转换器。
to和from分别指变换后和变换前的字符代码体系。
该方法中可能出现的异常如下。
若to或from不是String时,将引发
TypeError。若找不到to和from所指的变换器时,则引发
ArgumentError。若
iconv_open(3)运行失败,则引发SystemCallError。 Iconv.open(to, from) {|cd| ...}-
若没给块时,它相当于Iconv.new。若给块的话,将计算块的内容,关闭转换器,并返回块的计算值。
Iconv.iconv(to, from, *strs)-
它是下列语句
Iconv.open(to, from) {|cd| (strs + [nil]).collect {|s| cd.iconv(s)}}的省略形式。其中to和from的意义与Iconv.new中的相同。
strs是被变换的字符串。
该方法可能会引起Iconv.new, Iconv.open 以及 Iconv#iconv 中的异常。
Iconv.conv(to, from, str)-
它是下列语句
Iconv.iconv(to, from, str).join
的省略形式。请参考Iconv.iconv。
Iconv.list {|*aliases| ... } ((<ruby 1.9 特性>))-
Iterates each alias sets. 若未指定块,则返回编码名列表。
实例方法
Iconv#close-
结束转换。
若调用该方法之后再调用Iconv#iconv的话,就会引发异常。但若只调用
close本身的话则没问题。它的返回值是可以使输出缓冲区恢复到初始shift状态的字节串。
i = Iconv.open("ISO-2022-JP", "EUC-JP")
i.iconv("\264\301") #=> "\e$B4A"
i.iconv("\273\372") #=> ";z"
i.close #=> "\e(B" Iconv#iconv(str, [ start = 0, [ length = -1 ] ])-
开始转换字符串,并返回转换结果。
若str是字符串,则进行
str[start, length]转换,并返回转换结果。若str为
nil,则将转换器恢复到初始shift状态,并返回可将输出缓冲区恢复为初始shift状态的字节串。除此以外将引发异常。
str是转换后的字符串或
nil。start是str中的转换起始点。
length是str中的转换长度。若为
nil或-1的话,则指转换start后面的所有字符。该方法可能会引发Iconv::IllegalSequence、 Iconv::InvalidCharacter、以及 Iconv::OutOfRange 异常。
Iconv::Failure 模块
为Iconv可能引发的异常而设置的模块。
实例方法
Iconv::Failure#success-
返回发生异常前转换成功的字符串。
在Iconv.iconv 中发生该异常时的返回值是,由发生异常前转换成功的字符串所构成的数组。数组的最后一个元素就是变换中的字符串。
Iconv::Failure#failed-
它返回传给Iconv的字符串中的异常发生点之后部分。
Iconv::Failure#inspect-
返回形如#<
type: "success", "failed">这样的字符串。
Iconv::IllegalSequence 类
它表示,因为输出或输入的字符不在指定的字符集合内,所以停止转换。
超类
ArgumentError
包含的模块
Iconv::InvalidCharacter 类
它表示,因为输入的末尾部分是不完整的字符或shift,所以停止转换。
超类
ArgumentError
包含的类
Iconv::OutOfRange 类
Iconv库的内部错误。通常不会引发该异常。
超类
RuntimeError
包含的模块
例
新生成Iconv的实例,并使用Iconv#iconv方法
cd = Iconv.new(to, from)
begin
input.each {|s| output << cd.iconv(s)}
output << cd.iconv(nil) # don't forget this
ensure
cd.close
end带块调用Iconv.open
Iconv.open(to, from) do |cd|
input.each {|s| output << cd.iconv(s)}
output << cd.iconv(nil)
end(2) 的简略形式
Iconv.iconv(to, from, *input.to_a)
ruby Iconv.iconv编码方法的更多相关文章
- [ext/iconv/iconv.lo] Error 1
办法1: wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz tar -zxvf libiconv-1.13.1.tar.g ...
- cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题
当我写这篇文章的时候我是怀着激动的心情的,因为我又解决了一个技术问题.你可能对题目还一知半解,这是什么意思,我之所以要写这篇文章就是要解决当我们在cocos2dx中使用了第三方库的时候,移植到andr ...
- cocos2d_x iconv转码
作者:何卫 转载请注明,原文链接:http://www.cnblogs.com/hewei2012/p/3374147.html iconv下载(Android) 源码下载地址,已编译完的iconv包 ...
- Cocos2d-x 对于中文的支持-----iconv库
Cocos2d-x 对于中文的支持-----iconv库 转自:http://momowing.diandian.com/post/2013-01-16/40047183777 Jetion: 我们在 ...
- 移植到windows下的iconv
This is a short memo about installing iconv on Windows host (specifically: Windows 7 SP1 x64). Iconv ...
- WDCP从php5.2升级到5.3的办法,以及升级过程中iconv错误的处理
从wdcp官方论坛我们可以找到一个询问升级的帖子,然后管理员在回复中也提供了升级方法: cd /tmp wget -c http://dl.wdlinux.cn:5180/soft/php-5.3.1 ...
- 将iconv编译成lua接口
前一篇博文说了.在cocos2dx中怎么样使用iconv转码,这节我们将上一节中写的转码函数,做成一个lua接口.在lua脚本中使用. 网上能够下载到luaconv.可是编译的时候总是报错,所以自己写 ...
- undefined reference to libiconv_open ext/iconv/.libs/iconv.o by install phpsource
错误信息:ext/iconv/.libs/iconv.o(.text+0x30e2): In function `php_iconv_stream_filter_factory_create':/ho ...
- 使用iconv的包装类CharsetConverter进行编码转换的示例
GitHub地址https://github.com/BuYishi/charset_converter_test charset_converter_test.cpp #include <io ...
随机推荐
- [allmake] -- 交叉编译原来如此简单
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.:http://www.cnblogs.com/johnd/p/5060530.html 作者:Jo ...
- js中“||”和“&&”的高级用法
例1:用于赋值&&:从左往右依次判断,当当前值为true则继续,为false则返回此值(是返回未转换为布尔值时的原值哦)|| : 从左往右依次判断,当当前值为false则继续,为tru ...
- Jquery.ajax 详细解释 通过Http请求加载远程数据
首先请看一个Jquery.ajax的例子 $.ajax({ type: "GET", url: "/api/SearchApi/GetResults", dat ...
- htons和htonl函数具体应用
htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间的 ...
- HDU - 5878 2016青岛网络赛 I Count Two Three(打表+二分)
I Count Two Three 31.1% 1000ms 32768K I will show you the most popular board game in the Shanghai ...
- JAVA企业级开发-sql入门(07)
一. 数据库 什么是数据库? 就是一个文件系统,通过标准SQL语言操作文件系统中数据 ---- 用来存放软件系统的数据 我们今天学习的数据库是mysql.关系型数据库. 什么是关系化数据库 ? 保存关 ...
- 记微软OpenHack机器学习挑战赛
有幸参加了微软OpenHack挑战赛,虽然题目难度不大,但是很有意思,学到了很多东西,还有幸认识了微软梁健老师,谢谢您的帮助!同时还认识同行的很多朋友,非常高兴,把这段难忘的比赛记录一下~~也分享一下 ...
- Intellij IDEA生成JavaDoc(转)
Intellij IDEA生成JavaDoc(转)
- [poj]2488 A Knight's Journey dfs+路径打印
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 45941 Accepted: 15637 Description Bac ...
- Python实现二叉树的前序、中序、后序、层次遍历
有关树的理论部分描述:<数据结构与算法>-4-树与二叉树: 下面代码均基于python实现,包含: 二叉树的前序.中序.后序遍历的递归算法和非递归算法: 层次遍历: 由前序序列.中 ...