windows - 如何在 Ruby 中将字符串从 windows-1252 转换为 utf-8?

标签 windows ruby ms-access encoding character-encoding

我正在使用 Windows XP 上的 Ruby 1.8.6 将一些数据从 MS Access 2003 迁移到 MySQL 5.0(为此编写一个 Rake 任务)。

事实证明,Windows 字符串数据被编码为 windows-1252,而 Rails 和 MySQL 都假定为 utf-8 输入,因此一些字符(例如撇号)被破坏了。他们最后变成了带有重音的“a”之类的东西。

有谁知道将 windows-1252 字符串转换为 utf-8 的工具、库、系统、方法、仪式、咒语或咒语?

最佳答案

对于 Ruby 1.8.6,您似乎可以使用标准库的一部分 Ruby Iconv:

Iconv documentation

根据这个helpful article ,看来您至少可以像这样从字符串中清除不需要的 win-1252 字符:

ic = Iconv.new('UTF-8//IGNORE', 'UTF-8')
valid_string = ic.iconv(untrusted_string + ' ')[0..-2]

然后可能会尝试像这样进行完全转换:

ic = Iconv.new('UTF-8', 'WINDOWS-1252')
valid_string = ic.iconv(untrusted_string + ' ')[0..-2]

关于windows - 如何在 Ruby 中将字符串从 windows-1252 转换为 utf-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/951891/

相关文章:

windows - SWI-Prolog 写入文件

ruby-on-rails - 在 Rails 中,如何像 AngelList 那样为任意字符串生成路由?

ms-access - 如何限制 Access 的字符数超过255

c - 如何从 C 编写的源文件构建可执行文件?

windows - 从bitvise SSH服务器控制面板导出Windows帐户列表

ruby-on-rails - 什么是包含字母、无空格或特定长度数字的用户名的正则表达式?

css - :eq pseudo selector not working with Selenium WebDriver/Chrome

vba - 打开 .rtf 附件并粘贴当前电子邮件正文中的内容

arrays - 类型不匹配 VBA 数组

windows - '__COMPAT_LAYER' 实际上是做什么的?