Tag: utf 8

ruby(1.8.7):如何在刮擦时摆脱不可打印的字符?

我正在尝试使用Nokogiri解析HTML页面,但我遇到了一些文本问题。 主要是,我无法摆脱不必要的角色。 在解析时,当我获得String时,我总是尝试尽可能地清理它。 我尝试将非打印字符转换为唯一空格。 经过大量修改后,我使用这种方法没有成功: def clear_string(str) CGI::unescapeHTML(str).gsub(/\s+/mu,” “).strip end 例如,设置这个HTML片段(从http://www.gisa.cat/gisa/servlet/HomeLicitation?licitationID=1061525复制粘贴) Tramitació:  ordinària Netbeans 7.0使用Nokogiri和clear_string (上面定义的方法)显示了一些中间示例输出 row.at(“td[1]”).text # => “Tramitació:” row.at(“td[2]”).text # => ” ordinària ” clear_string(row.at(“td[2]”).text) # => ” ordinària” row.at(“td[2]”).text.scan(/./mu) # => [“\302\240”, “o”, “r”, “d”, “i”, “n”, “\303\240”, “r”, “i”, “a”, ” “] 我不知道为什么strip不会摆脱第一个空间。 此外,应用clear_string后的解析结果将使用YAML::dump转储到yaml文件中。 其内容分别为两种文本: “Tramitaci\xC3\xB3:” !binary | wqBvcmRpbsOgcmlh 第一个似乎不太好,但我不知道如何解决第二种情况。

Ruby:如何将潜在的unicode字符串分解为字节

我正在编写一个用户输入并在屏幕上呈现它的游戏。 我正在使用的引擎完全是unicode友好的,所以如果可能的话,我想保留它。 问题是渲染循环如下所示: “string”.each_byte do |c| render_this_letter(c) end 我对i18n了解不多,但我知道上面的代码只会对我和说我的语言的人有用。 我更喜欢这样的东西: “unicode string”.each_unicode_letter do |u| render_unicode_letter(u) end 这是否存在于核心分发中? 我有点厌恶为安装添加额外的要求,但如果这是唯一的方法,我会活着。 为了额外的乐趣,我无法知道字符串实际上是否是一个unicode字符串。 编辑:我正在使用的库确实可以渲染整个字符串,但是我让用户编辑动态出现的内容 – 如果它们点击’退格’,基本上,我需要知道要删除多少字节。

从Ruby 1.8.7到系统调用iconv将文件从utf-16转换为utf-8

这是我得到的: path_js = ‘path/to/a/js/file.js’ path_new_js = ‘path/where/the/converted/file/should/go.js’ puts(‘iconv -f utf-16le -t utf-8 ‘ + path_js + ‘ > ‘ + path_new_js) system(‘iconv -f utf-16le -t utf-8 ‘ + path_js + ‘ > ‘ + path_new_js) puts语句的输出是: iconv -f utf-16le -t utf-8 path/to/1-1-2_E1_MC105.js > compiled/path/to/1-1-2_E1_MC105.js 如果我在终端中复制粘贴完全相同的行,则转换会成功进行,但是当它在我的ruby脚本中运行时,新文件的创建编码与原始文件相同(在本例中为utf-16)。 关于什么是缺失/错误的任何想法? 干杯! 更新:我使用的是Mac OS X Snow Leopard,我使用ruby 1.8.7(系统默认)和1.9.2(使用RVM安装)尝试了相同的脚本。 我也尝试了以下内容: f […]

将数据从excelfile写入数据库时​​编码错误(mysql)

写入数据库时​​出现此错误: Encoding::UndefinedConversionError “\xD0” from ASCII-8BIT to UTF-8 谷歌搜索后,问题似乎在于ruby1.9.2字符串处理,但没有找到真正的解决方案。 我使用magic_encoding强制utf-8对所有数据。 我的数据库也在utf-8上运行。 我正在运行rails 3.1和ruby 1.9.2。 任何人都可以对这个错误有所了解吗?

Hpricot – UTF-8问题

运行以下代码时出现以下错误: invalid byte sequence in UTF-8 (ArgumentError) 代码: require ‘hpricot’ require ‘open-uri’ doc = open(‘http://www.amazon.co.jp/’) {|f| Hpricot(f.read) } puts doc.to_html Hpricot无法解析日文内容。 有关解决此问题的任何建议吗?

Ruby 1.8和UTF-8字符串case语句比较

我有一个Rake任务(在lib / tasks目录中),我在共享的Web托管上使用cron运行。 问题是我想使用案例陈述来比较UTF-8字符串,但我的源代码不是UTF-8编码的。 如果我将源代码保存为UTF-8,当我尝试启动它时会出错:( 我该怎么办? 可以从外部UTF-8 txt文件中读取这个字符串吗? PS我正在使用Ruby 1.8 PS我的意思是这样比较: result = case utf8string when ‘АБВ’: 1 when ‘ГДИ’: 2 when ‘ЙКЛ’: 3 when ‘МНО’: 4 else 5 end

Ruby:如何将文件保存为UTF-16 Little Endian

我想将®保存到带有UTF-16 Little Endian的txt文件中,我在某些方面进行了测试 1.下面的编码是UTF-8 $RegisterMark=[174].pack(‘U*’) file = File.new(“C:/Output.txt”,”w”) file.puts $RegisterMark file.close 2.下面的编码是UTF-16 Big Endian require ‘iconv’ $RegisterMark=[174].pack(‘U*’) $utf16RegisterMark =Iconv.conv(‘UTF-16’, ‘UTF-8’, $RegisterMark ) file = File.new(“C:/Output.txt”,”w”) file.puts $utf16RegisterMark file.close 指南Iconv.conv不支持UTF-16 LE类型。 如何用UTF16 LE保存output.txt?

在Ruby 1.8.7中将具有二进制数据的YAML响应转换为UTF-8

我正在从API中获取响应并接收: response: job: unit_count: “1” slug: Answers lc_tgt: ja body_tgt: !binary | 5Zue562U lc_src: en body_src: Answers job_id: “1948888” opstat: ok body_tgt值应该是几个日文字符(回答),但它们正在转换为安全运送。 我在1.8.7,所以我不能强制编码。 有没有办法解包()他们?

麻烦用Ruby的’open-uri’打开utf-8 URI

我正在尝试使用ruby和open-uri从谷歌地图Web服务API获取丹麦的位置地址。 试图让Ærø,丹麦 : http : //maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false&region=dk在Chrome中运行时不支持open-uri: require ‘rubygems’ require “open-uri” require ‘json’ uri = “http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false&region=dk” response = open(uri) array = JSON.parse(response) pp array 在这里它产生 /usr/lib/ruby/1.8/uri/common.rb:436:in `split’: bad URI(is not URI?): http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false&region=dk (URI::InvalidURIError) 另一种方法是逃避角色: uri = “http://maps.googleapis.com/maps/api/geocode/json?address=ærø&sensor=false&region=dk” uri_escaped = URI.escape(uri) response = open(uri_escaped) array = JSON.parse(response.read) pp array 但这会产生一个逃脱的结果(这不是追求:-) 任何人都知道什么可以解决这个问题(获得未转发的反馈或发送utf-8请求)? 这里的Ruby版本是1.8.7

如何在Rails中将文本转换为unicode?

在我的数据库中,我有以下条目 id | name | info 1 John Smith Çö ¿¬¼ 正如您所知,信息列显示错误 – 但它实际上是韩语。 在Chrome中,当我将浏览器编码从UTF-8切换到韩文(我认为是’euc-kr’)时,我实际上设法查看文本: id | name | info 1 John Smith 횉철 쩔짭쩌 然后我手动将文本复制到数据库中的信息并保存,现在我可以用UTF-8查看它,而无需切换浏览器的编码。 真棒。 现在我想在Rails中完成同样的事情,而不是手动完成。 所以再次从原始条目开始,我转到控制台并输入: require ‘iconv’ u = User.find(1) info = u.info new_info = Iconv.iconv(‘euc-kr’,’UTF-8′, info) u.update_attribute(‘info’, new_info) 但是,我最终得到的是数据库中횉철 쩔짭쩌 ,而不是“ 횉철 쩔짭쩌 。 我对unicode和编码有一个非常基本的了解。 有人可以解释一下这里发生了什么,以及如何解决这个问题? 我想要的结果是我手动实现的。 谢谢!