ruby中字符串的转码 使用方法以及注意事项
不同于java, ruby内部并不支持unicode(据说到2.0会支持, 但是没有确认)
在字符编码处理上ruby是借助于Open Group的iconv库, 这个库在linux上似乎默认就有, windows上没有这个库, 解决方案在末尾
使用iconv很简单, 下面是把iso8859-1编码转换到GBK编码的例子





需要注意的是转换以后还需要调用一下iconv(nil)来刷新未输出的数据 , 最后记得关闭conv
以上方式可以用block来简化
Iconv.open(toencoding, fromencoding) do |cd|
input.each {|s| output << cd.iconv(s)}
output << cd.iconv(nil)
end
input.each {|s| output << cd.iconv(s)}
output << cd.iconv(nil)
end
当然,还有一种更简单的方式

最后还要提醒一下, iconv接受编码是toencoding在前, fromencoding在后, 不要记错了.偶就是因为这个问题被郁闷了半天
题外话: ruby中很多功能都依赖于各种库, 比如这个iconv, 真是胶水语言的典型范例.
--------------------------------------------------------------------
补充: windows下面iconv 的安装
到这里下载iconv安装包, 按照如下方式放置包中的文件就OK了
iconv.so -> ruby\lib\ruby\1.8\i386-mswin32\
iconv.dll -> windows\system32\
charset.dll -> windows\system32\
更详细的说明见安装包中的README
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架