Tag: unicode

使用Ruby中的Watir填充text_field时的编码问题

我正在使用Watir填写一个text_field,其中包含我之前使用其他程序编写的html代码。 我正在转移的网站内容的语言是德语,因此涉及一些特殊字符,这些字符在英语字母表中不存在。 这些字符在html文件中正确显示,但是当转移到Joomla安装的text_field(我用这个程序将网站转移到Joomla)时,特殊字符无法正确显示。 由于用户的帮助很大,我已经能够解决以前的问题,并且现在使用以下方法传输内容: browser.text_field(:id => “text”).value=(open(‘my-site.html’) { |f| f.read }) 结果是,特殊字符显示如下: über => ³ber vergißt => vergi▀t wählen => wõhlen geförderter => gef÷rderter 用户猜测它与我正在使用的代码页和编码问题有关。 运行DOS:chcp导致输出850。 他试图解决这个问题的方法如下: require ‘iconv’ browser.text_field(:id => “text”).value=( Iconv.iconv(‘CP850’, ‘ISO-8859-1’, open(‘my-site.html’) { |f| f.read }) ) 不幸的是,这并没有解决问题,特殊字符现在显示为:\ x81ber =übervergi\ xE1t =vergißt,新行显示为\ n 我使用Mechanize抓取了页面,使用以下代码: auszug=page.search (‘/html/body/table/tr/td/table/tr[2]/td/table/tr/td[4]’) outputFile<<auszug 我希望你能以某种方式帮助我,因为我只是一名志愿者,在这里工作,有一点编程经验。 如果我没有在下周运行这个程序(这个编码的东西是唯一真正阻止我的东西),那么我将不得不使用copy + paste手动传输一百页:/ 感谢您花时间和所有的努力! […]

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?

使用gsub替换重音字符

这是我的代码: text = File.read(‘/Users/username/Desktop/text.txt’) replace = text.gsub(‘hai’, ‘hǎi’) File.open(‘/Users/username/Desktop/text.txt’, “w”) {|file| file.puts replace} 我试图从我的终端运行此脚本,但它给出了这个错误: XXXX:Desktop username$ ruby replace.rb replace.rb:2: invalid multibyte char (US-ASCII) replace.rb:2: invalid multibyte char (US-ASCII) replace.rb:2: syntax error, unexpected $end, expecting ‘)’ replace = text.gsub(‘hai’, ‘hǎi’) ^ 我实际上想在CSV文件中用重音字符替换大量字符,稍后将其导出到我的MySQL数据库。

Tab / LF / CR unicode字符

我有一个Unicode文件(UTF-16 FFFE little-endian BOM),它包含多个以制表符分隔的字段。 在ruby中使用.split读取拆分unicode(我认为) ,我将使用Ruby拆分(文件到行,然后行到字段)。 BTW,什么是Unicode字符: 如果 CR 标签 谢谢!

Ruby中Windows上的Unicode文件名

我有一段看起来像这样的代码: Dir.new(path).each do |entry| puts entry end 当我在列出的目录中有一个名为こんにちは世界.txt的文件时出现问题。 在Windows 7机器上,我得到输出: ???????.txt 从谷歌搜索,在Windows上正确读取此文件名似乎是一项不可能完成的任务。 有什么建议?

在ruby中使用.split拆分unicode(我认为)

我正在从last.fm抓取一个rss feed并且title属性看起来像是一个unicode“ – ”,它在firebug上出现了\ u2013。 这是好奇的人的饲料: http://ws.audioscrobbler.com/2.0/user/rj/recenttracks.rss 当我写这样的东西 feedentry.title.split(‘-‘) 它不会找到unicode dash。 我也试过这个: @feedsplit = feedentry.title.gsub(/\u2013/,’-‘).split(“-“) 以及使用[]范围等一些变化。 没运气。 我看了看其他答案,其中没有一个似乎适合我,所以这是我最后的希望。 谢谢你的时间!

如何在Ruby中改变……(elipses)到……(三个时期)?

我正在使用nokogiri解析这个文档 。 我发现该页面中有一些… (elipses)字符,无法删除。 我想知道如何使用Ruby将所有… (elipses)替换为… (三个句点)。 顺便说一句,你可以搜索这个字符串来查找所有…s 指定是否ALTER TABLE 编辑:我添加了我的程序和错误消息。 # encoding: UTF-8 require ‘nokogiri’ require ‘open-uri’ require ‘terminal-table’ def change s {Nokogiri::HTML(” “).text => ” “, Nokogiri::HTML(“"”).text => ‘”‘, Nokogiri::HTML(“™”).text => ‘(TM)’, Nokogiri::HTML(“&”).text => “&”, Nokogiri::HTML(“<“).text => ” “>”, Nokogiri::HTML(“©”).text => “(C)”, Nokogiri::HTML(“®”).text => “(R)”, Nokogiri::HTML(“¥”).text => ” “}.each do |k, v| s.gsub!(k, v) […]

如何在Ruby正则表达式中匹配韩语字符?

我对使用正则表达式的用户名进行了一些基本validation,比如[\w-_]+ ,我想添加对韩语字母的支持,同时仍然保持validation相同。 我不想允许特殊字符,例如{}[]!@#$%^&*()等,我只想用除了[a-zA-Z0-9]之外的匹配给定字母的东西替换\w [a-zA-Z0-9] 。 这意味着像안녕 username这样的用户名应该有效,但不是안녕[] 。 我需要在Ruby 1.9中这样做。

Ruby的String#gsub,unicode和非单词字符

作为更大系列操作的一部分,我正在尝试使用更大字符串的标记块并摆脱标点符号,非字gobbledygook等。我的初始尝试使用String#gsub和\W regexp字符类,如所以: my_str = “Hello,” processed = my_str.gsub(/\W/,”) puts processed # => Hello 超级,超级,超级简单。 当然,现在我正在扩展我的程序以处理非拉丁字符,并且所有的东西都被打破了。 Ruby的\W似乎就像[^A-Za-z0-9_] ,当然,它排除了变音符号(ü,í等)的东西。 所以,现在我以前简单的代码以不愉快的方式崩溃和烧毁: my_str = “Quística.” processed = my_str.gsub(/\W/,”) puts processed # => Qustica 请注意,gsub()必须删除带重音的“í”字符。 我想到解决这个问题的一种方法是扩展Ruby的\ W白名单以包含更高的Unicode代码点,但是它们中有很多,我知道我会错过一些并导致问题(并且我们甚至没有开始考虑非拉丁语言……)。 另一个解决方案是将我想要摆脱的所有东西列入黑名单(标点符号,$ /%/&/™等),但是,再次,有很多这样的东西,我真的不想开始玩黑名单-敲击一个痣。 有没有人找到这个问题的原则解决方案? 是否有一些我尚未发现的隐藏的,Unicode友好的\W版本? 谢谢!

在Ruby中将Unicode Number转换为Integer

不幸的是,我有一些数字作为字符串使用非ASCII数字。 我需要将它们转换为常规的Ruby数字来对它们进行一些数学运算。 因此,例如,如果数字作为字符串“19”进来,这是19但是作为字符“扩展阿拉伯语数字一”然后是“扩展阿拉伯语数字九”,我需要一种方法将其转换为Ruby整数Fixnum 19。 问题是, 根据这个 ,有55组这些扩展数字的0-9,即我需要处理550个总代码点。 我已经知道,对于给定的组,连续数字的代码点是连续的,因此例如扩展的阿拉伯语数字0是U + 06F0,扩展的阿拉伯语数字9是U + 06F9,所以我可以测试每个数字以查看哪个范围它在然后从我正在查看的字符的代码点中减去零代码点作为整数,给我常规的Ruby整数。 例如,6F9 – 6F0 = 9(粗略地说,一旦它们被转换为整数代码点)。 但要做到这一点,我需要为这55个范围创建一个巨大的查找哈希,这就是很多打字。 我想我可以将上面链接中的HTML表格翻译成ruby地图,但这感觉很糟糕。 我已经知道了 “۱۹” =~ /[[:digit:]]+/ 将是匹配,但问题是“如何将这些Unicode数字转换回常规的Ruby整数?” 一定有更好的方法! 有任何想法吗? 谢谢!