Tag: 编码

Ruby String.encode仍然提供“UTF-8中的无效字节序列”

在IRB,我正在尝试以下方面: 1.9.3p194 :001 > foo = “\xBF”.encode(“utf-8”, :invalid => :replace, :undef => :replace) => “\xBF” 1.9.3p194 :002 > foo.match /foo/ ArgumentError: invalid byte sequence in UTF-8 from (irb):2:in `match’ 有什么想法会出错吗?

编写Ruby on Rails代码?

是否有任何应用程序可以让我编写Ruby on Rails代码,以便其他人无法读取它? 我计划出售一些小应用程序,但我真的不希望每个人都知道我的代码。 谢谢。

为什么在读取文本文件时出现“UTF-8中的无效字节序列”错误?

我正在编写一个Ruby脚本来处理一个大文本文件,并继续得到奇怪的编码错误。 这是情况: input_data = File.new(in_path, ‘r’).read p input_data.encoding.name # UTF-8 break_char = “\r”.encode(“UTF-8”) p break_char # “\r” p break_char.encoding.name # “UTF-8” input_data.split(“,”.encode(“UTF-8”)) p Encoding.compatible?(input_data, break_char) # # Encoding:UTF-8> 这会产生错误:in ‘split’: invalid byte sequence in UTF-8 (ArgumentError) 我阅读http://blog.grayproductions.net/articles/ruby_19s_string并查看其他解决方案显然是同样的问题,但仍然无法解决为什么它发生在我相信我控制编码时。 我在OSX上使用ruby 1.9.2

为什么我用#inspect获得Encoding :: CompatibilityError?

以下代码没有问题: #encoding: utf-8 class Text def initialize(txt) @txt = txt end def inspect “” % @txt end end p Text.new(‘Hello World’) 但是,如果我尝试使用p Text.new(‘Hä, was soll das?’)我会得到一个Encoding :: CompatibilityError: inspect_with_umlaut.rb:26:in `p’: inspected result must be ASCII only or use the default external encoding (Encoding::CompatibilityError) from inspect_with_umlaut.rb:26:in `’ 为什么这个? 更重要的是:我该如何避免它?

Rails 3 – 如何处理PG错误不完整的多字节字符

在Rails 3.2应用程序(Ruby 1.9.2)中,我收到以下错误 在mobile_users#update中发生PGError: 不完整的多字节字符 这些是Postgres错误我在开发和测试模式下测试时遇到类似的SQLIte错误 导致此错误的参数是(故意省略auth令牌) * Parameters: {“mobile_user”=>{“quiz_id”=>”1”, “auth”=>”xxx”, “name”=>”Joaqu\xEDn”}, “action”=>”update”, “controller”=>”mobile_users”, “id”=>”1”, “format”=>”mobile”} 这是作为JSON HTTP Put请求进行的,处理此问题的更新操作如下所示 # PUT /mobile_users/1 # PUT /mobile_users/1.xml def update @mobile_user = current_mobile_user @mobile_user.attributes = params[:mobile_user] respond_to do |format| if @mobile_user.save format.html { redirect_to(@mobile_user, :notice => ‘Mobile user was successfully updated.’) } format.json { head :ok } format.mobile […]

如何在Ruby中解码RFC 2047编码的电子邮件头?

我有以下标题: From: =?iso-8859-1?Q?Marta_Falc=E3o?= 我可以轻松地将这些东西拆分出来,然后离开我 “=?iso-8859-1?Q?Marta_Falc=E3o?=” 我可以用什么把它变成”Marta Falcão” ?

open-uri从iso-8859编码的网页返回ASCII-8BIT

我正在使用open-uri来阅读声称在iso-8859-1中编码的网页。 当我读取页面内容时,open-uri返回以ASCII-8BIT编码的字符串。 open(“http://www.nigella.com/recipes/view/DEVILS-FOOD-CAKE-5310”) {|f| p f.content_type, f.charset, f.read.encoding } => [“text/html”, “iso-8859-1”, #] 我猜这是因为网页的字节(或字符)\ x92不是有效的iso-8859字符。 http://en.wikipedia.org/wiki/ISO/IEC_8859-1 。 我需要将网页存储为utf-8编码文件。 关于如何处理编码不正确的网页的任何想法。 我可以捕获exception并尝试猜测正确的编码,但这看起来很麻烦且容易出错。

如何在Ruby 1.9.1中将Net :: HTTP响应转换为某种编码?

我有一个Sinatra应用程序( http://analyzethis.espace-technologies.com )执行以下操作 检索HTML页面(通过net / http) 从response.body创建一个Nokogiri文档 提取一些信息并将其发送回响应中。 响应应该是UTF-8编码 所以我在尝试阅读使用windows-1256编码的网站时遇到了这个问题,例如www.filfan.com或www.masrawy.com。 问题是虽然没有抛出错误,但编码转换的结果不正确。 net / http response.body.encoding给出ASCII-8BIT,它不能转换为UTF-8 如果我做Nokogiri :: HTML(response.body)并使用css选择器从页面获取某些内容 – 例如标题标签的内容 – 我得到一个字符串,当我调用string.encoding返回WINDOWS-1256 。 我使用string.encode(“utf-8”)并使用它发送响应,但同样响应不正确。 关于我的方法有什么问题的任何建议或想法?

Ruby是否提供了使用指定编码执行File.read()的方法?

在ruby 1.9.x中,我们可以使用File.open(‘filename’,’r:iso-8859-1′)指定编码。 如果我直接将许多短文件读入字符串,我通常更喜欢使用单行File.read()。 有没有办法可以直接指定编码,或者我是否必须采用以下方法之一? str = File.read(‘filename’) str.force_encoding(‘iso-8859-1’) 要么 f = File.open(‘filename’, ‘r:iso-8859-1’) s = ” while (line = f.gets) s += line end f.close

使用Ruby自动打开文件作为二进制文件

我正在使用Ruby 1.9打开几个文件并将它们复制到一个存档中。 现在有一些二进制文件,但有些不是。 由于Ruby 1.9不能自动打开二进制文件作为二进制文件,有没有办法自动打开它们? (所以“.class”是二进制的,“。txt”不是)