ruby - Ruby中如何处理 ""等字符

标签 ruby encoding utf-8 character-encoding iconv

我想将“HELLO”转换为“HELLO”,删除所有在插入数据库时​​会导致问题的特殊字符。它们似乎不是 UTF8 的一部分。

我想弄清楚 Iconv ,但我有点卡在这里:

str = "A string with " to "A string with "
some_format = "I have no clue what format this is"
Iconv.conv(some_format, 'UTF-8//IGNORE', str)

这样做:

Iconv.conv('UTF-16', 'UTF-8//IGNORE', str)

...返回...

\376\377\000H\000E\000L\000L\000O?G?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?????\342

我不想转换为 UTF8 以外的格式,因为我必须处理阿拉伯字符、中文、日文、韩文...

如有任何帮助/指点,我们将不胜感激。我正在使用 Ruby 1.8.7,但我应该很快迁移到 1.9.3。在这两种情况下都适用的解决方案是最好的,但仅适用于 1.9.3 的解决方案也可以。

最佳答案

这是一种删除特定编码中不存在的字符的方法(将字符串转换为另一种编码时)

# -*- coding: utf-8 -*-
a = "⚒og"
p a => ⚒og
p a.encode('iso-8859-1', :undef => :replace, :replace => '') => og

但是您的问题可能有所不同。因为那些有问题的字符不太可能不是 utf-8 的一部分。 可能出现的问题:

  1. 也许只是您使用的字体不知道如何显示这些字符。很少有字体具有完整的 utf-8 字符覆盖范围。 我不知道您如何尝试显示这些字符串,但请确保您使用的字体具有良好的字符覆盖率。例如 DejaVu,http://dejavu-fonts.org/wiki/Main_Page

  2. 您确定您的数据库已正确配置为使用 utf-8 吗?

  3. 另外要小心,因为您的字符串可能非常好,但由于不完整的 utf-8 支持(以前发生在我身上)而无法显示在您的终端或数据库应用程序中。因此,当您的调试显示出现问题时,有时调试起来会很棘手……(这有意义吗?)

关于ruby - Ruby中如何处理 ""等字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9837443/

相关文章:

sql - 将 SQL Server 中的文本值从 UTF8 转换为 ISO 8859-1

python - UnicodeEncodeError 仅在通过管道传输到文件时且仅在某些 PC 上出现

ruby-on-rails - rack::utils::escape 的 nomethoderror

javascript - Ruby on Rails 应用程序中的 React .js.jsx 扩展

C# - 如何对字符串或字符进行编码?

encoding - 为什么base64编码的字符串末尾有=号

ruby - def func(var) 和 def func=(var) 有什么区别?

ruby - 在 Ruby Test::Unit 中 stub CSV 文件

unicode - 什么是威南西?

javascript - encodeURIComponent 对 javascript 字符串使用 ISO-8859-1 编码