草庐IT

ruby - 使用 Ruby 将 UTF8 转换为 ANSI

我有一个Ruby脚本,它在Linux机器上远程生成一个UTF8CSV文件,然后通过SFTP将该文件传输到Windows机器。然后我需要用Excel打开这个文件,但是Excel没有UTF8,所以我总是需要在能够将UTF8转换为ANSI的文本编辑器中打开这个文件。我很乐意使用Ruby以编程方式执行此操作并避免手动转换步骤。最简单的方法是什么?PS:我尝试使用iconv但没有成功。 最佳答案 ascii_str=yourUTF8text.unpack("U*").map{|c|c.chr}.join假设您的文本确实适合ascii字符集。

ruby - 如何将 UTF8 组合字符转换为 ruby​​ 中的单个 UTF8 字符?

一些字符,例如Unicode字符'LATINSMALLLETTERCWITHCARON'可以编码为0xC40x8D,但也可以用'LATINSMALLLETTERC'和'COMBININGCARON',即0x630xcc0x8c。更多信息在这里:http://www.fileformat.info/info/unicode/char/10d/index.htm我想知道是否有一个库可以将“LATINSMALLLETTERC”+“COMBININGCARON”转换为“LATINSMALLLETTERCWITHCARON”。或者是否有包含这些转化的表格? 最佳答案

ruby-on-rails - ActionView::Template::Error(不兼容的字符编码:UTF-8 和 ASCII-8BIT)

我正在使用Ruby1.9.2、Rails3.0.4/3.0.5和PhusionPassenger3.0.3/3.0.4。我的模板是用HAML编写的,我使用的是MySQL2gem。我有一个Controller操作,当传递一个具有特殊字符(如变音符号)的参数时,会出现以下错误:ActionView::Template::Error(incompatiblecharacterencodings:UTF-8andASCII-8BIT)错误指向我的HAML模板的第一行,其中包含以下代码:我的理解是,这是因为我有一个UTF-8字符串与一个ASCII-8BIT字符串连接在一起,但我终究无法弄清楚那个

ruby-on-rails - 在 RoR 中对 UTF-8 字符串进行排序

我正试图找出一种在RubyonRails中对UTF-8字符串进行排序的“正确”方法。在我的应用程序中,我有一个填充了国家/地区的选择框。由于我的应用程序已本地化,每个现有的语言环境都有一个countries.yml文件,该文件将国家的ID与该国家/地区的本地化名称相关联。我无法在yml文件中手动对字符串进行排序,因为我需要ID在所有语言环境中保持一致。我所做的是创建一个使用unidecode的ascii_name方法gem将重音字符和非拉丁字符转换为对应的ascii字符(例如,“Afeganistão”将变为“Afeganistao”),然后对其进行排序:require'unideco

ruby-on-rails - 为什么我会收到从 ASCII-8BIT 到 UTF-8 的字符串编码问题 "\xE2"?

我正在尝试从电子邮件下载PDF并将内容写入文件。出于某种原因,我收到此错误:AnEncoding::UndefinedConversionErroroccurredinattachments#inbound:"\xE2"fromASCII-8BITtoUTF-8app/controllers/api/attachments_controller.rb:70:in`write'这是我的代码:definboundifRails.env.production?orRails.env.staging?email=Postmark::Mitt.new(request.body.read)else

ruby-on-rails - 在 Rails 中保存后向属性添加了奇怪的字节

我们遇到了一个疯狂的错误,在保存电子邮件时,大约90%的时间看似随机的字节被附加到电子邮件字段。以下是可能发生的情况的示例:Fromparams:'user@example.com'Beforevalidate:'user@example.com'Aftervalidate:'user@example.com'Beforesave:'user@example.com'Valueinobjectaftersave:'user@example.com'Retrieverecordjustcreatedbyid,andfetchid:'user@example.com\u007f'Where

ruby - 在 Heroku 中将 UTF-8 设置为默认字符串编码

我需要在Heroku中将默认的ruby​​字符串编码更改为UTF-8。由于某种原因,它是US-ASCII。$herokuconsoleRubyconsoleformyapp.heroku.com>>"a".encoding=>#但是,如果我在本地运行irb,我会得到不同的结果:$irbruby-1.9.2-p136:001>"a".encoding=>#两者都在ruby​​1.9.2上运行。我也试过设置这个,但没用:Encoding.default_internal=Encoding.default_external="UTF-8"想法?谢谢,菲利普 最佳答

ruby - 如何在 Ruby 中删除 4 字节的 utf-8 字符?

由于MySQL的utf8不支持4字节字符,我正在寻找一种方法来检测和消除Ruby字符串中的任何4字节utf8字符。我知道我可以更新我的表以使用utf8m4,但由于一些不可能或所需的解决方案的原因。简单地将字符串编码为ASCII会删除这些字符,但也会删除所有其他非ASCII字符,这并不好。 最佳答案 以下似乎适用于Ruby1.9.3:input.each_char.select{|c|c.bytes.count例如:input="hello\xF0\xA9\xB6\x98world"#includesU+29D98input.each

ruby-on-rails - 我可以在 Ruby 1.9 上设置默认字符串编码吗?

这听起来可能微不足道,但它让我抓狂。自上周五在Ruby1.9上发布应用程序到生产环境以来,我一直遇到许多与字符编码相关的小异常。几乎所有内容都是以下方面的一些变体:Encoding::CompatibilityError:incompatiblecharacterencodings:ASCII-8BITandUTF-8我们有一个国际用户群,所以很多名字都包含元音变音等。如果我修复模板以在很多地方使用force_encoding,它会在flash消息帮助器中弹出。等等。目前看来我已经确定了所有我知道的,方法是在一个地方修补ActiveSupport的字符串连接,然后在顶部设置#encod

ruby - UTF-8 中的无效字节序列 (ArgumentError)

我正在尝试运行Ruby脚本,但总是在这一行出现错误:file_content.gsub(/dr/i,'med')我试图用“med”替换“dr”的地方。错误是:program.rb:4:in`gsub':invalidbytesequenceinUTF-8(ArgumentError)这是为什么,我该如何解决这个问题?我正在使用Ruby2.2.1p85的MACOSXYosemite机器上工作。 最佳答案 可能你的字符串不是UTF-8格式,所以使用if!file_content.valid_encoding?s=file_content