上周,在一些gem安装或gem更新操作中,我收到了与这些类似的错误:ERROR:Whilegeneratingdocumentationforsinatra-1.3.1...MESSAGE:errorgeneratingC:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/doc/sinatra-1.3.1/rdoc/README_de_rdoc.html:incompatibleencodingregexpmatch(UTF-8regexpwithIBM437string)(Encoding::CompatibilityError)类似的:E
我刚刚从ruby1.9.2更新到ruby1.9.3p0(2011-10-30修订版33570)。我的Rails应用程序使用postgresql作为其数据库后端。系统区域设置为UTF8,数据库编码也是如此。Rails应用程序的默认编码也是UTF8。我有中国用户输入汉字和英文字符。字符串存储为UTF8编码字符串。rails版本:3.0.9自更新以来,数据库中的一些现有中文字符串不再正确显示。这不会影响所有字符串,只会影响那些属于序列化哈希的字符串。存储为普通字符串的所有其他字符串看起来仍然是正确的。示例:这是一个序列化的散列,在数据库中存储为UTF8字符串:broken="---!
是否有在Ruby1.8.7(或Rails2.x)中使用String.force_encoding()的解决方案,以便它像在Ruby1.9中一样工作?我读了一些关于requireactive_support的内容,但这不起作用$>gem列表--本地|grep'rails\|activesupport'activesupport(3.0.3,2.3.8,2.3.5)rails(2.3.8,2.3.5)$>ruby-vruby1.8.7(2010-08-16patchlevel302)[i686-darwin10.4.0]$>rails-vRails2.3.8IRB:>require"rub
在输入编码未知的Ruby1.9中,是否有一种公认的方法来处理正则表达式?假设我的输入恰好是UTF-16编码的:x="foobarbaz"y=x.encode('UTF-16LE')re=/(.*)/x.match(re)=>#bar"1:"bar">y.match(re)Encoding::CompatibilityError:incompatibleencodingregexpmatch(US-ASCIIregexpwithUTF-16LEstring)我目前的方法是在内部使用UTF-8并在必要时重新编码(副本)输入:ify.methods.include?(:encode)#Rub
我有一个网站需要加密和存储上传到服务器的二进制文件。上传和存储工作正常,但在尝试写入加密文件时出现此错误:Encoding::UndefinedConversionError("\xDD"fromASCII-8BITtoUTF-8):导致它的代码如下所示:fd_in=IO.sysopen(self[:name].tempfile.path,"rb")file_in=IO.open(fd_in)fd_out=IO.sysopen(self[:name].tempfile.path+".encrypted","wb")file_out=IO.open(fd_out)cipher=OpenS
我遇到了两个错误,都与编码有关并且都相关。我在启动WEBrick时遇到的第一个错误(技术上是警告):/Users/USERNAME/example/config/initializers/bb-ruby.rb:54:warning:invalidUnicodeProperty\P:/\:\-?\P/它所指的行是:/\:\-?\P/,这只是一些正则表达式,最终是这个block的一部分:@@tags['Razzing']=[/\:\-?\P/,'','Razzing',':P',:razzing]然后,我在解析一些字符串时也得到了以下错误(大概是由于同一行)...Encoding::Com
我真的不明白Ruby中String类的#encode和#force_encoding之间的区别。我知道"kam".force_encoding("UTF-8")会强制"kam"以UTF-8编码,但是#encode(编码)不同?http://ruby-doc.org/core-2.0/String.html#method-i-encoding 最佳答案 差别还是挺大的。force_encoding设置给定的字符串编码,但不更改字符串本身,即不更改它在内存中的表示形式:'łał'.bytes#=>[197,130,97,197,130]
我有一个从某种输入中读取的字符串。据我所知,它是UTF8。好的:string.force_encoding("utf8")但是如果这个字符串中的字节实际上不是合法的UTF8,我想现在就知道并采取行动。一般遇到这样的字节,force_encoding("utf8")会引发吗?我相信不会。如果我在做#encode我可以从方便的选项中选择如何处理源编码(或目标编码)中无效的字符。但我不是在执行#encode,而是在执行#force_encoding。它没有这样的选项。这是否有意义string.force_encoding("utf8").encode("utf8")立即获得异常?通常编码fr
我可以通过在其顶部添加注释行来指定任何ruby文件使用特定编码:#encoding:utf-8但是在Rails的config/application.rb中,我发现了这个:config.encoding="utf-8"它们有什么不同吗?如果我设置了config.encoding="utf-8",我还需要#encoding:utf-8吗? 最佳答案 config/application.rb中的config.encoding="utf-8"部分与Rails应如何解释内容有关。ruby文件中的#encoding:utf-8告诉rub
是否有任何gem可以自动将#encoding:UTF-8添加到每个Ruby文件?或者是否有任何其他方法可以防止整个RubyonRails项目(不仅在单个类中)出现invalidmultibytechar(US-ASCII)错误? 最佳答案 升级到Ruby2.0,因为它使UTF-8成为默认编码,从而消除了对魔术注释的需要。 关于Ruby:如何自动添加"#encoding:UTF-8"?,我们在StackOverflow上找到一个类似的问题: https://st