Tag: 字符编码

添加反斜杠以修复ruby字符串中的字符编码

我确信这很容易,但我会被所有这些反斜杠打结。 我有一些数据,我正在网站上(礼貌地)。 偶尔会有一句话看起来像这样: u00a362 000? you must be joking 当然应该是’£2 000? 你一定是在开玩笑’。 irb的一个简短测试破译了它。 ruby-1.9.2-p180 :001 > string = “u00a3” => “u00a3” ruby-1.9.2-p180 :002 > string = “\u00a3” => “£” 当然:添加一个反斜杠,它将被解码。 我在这个问题的帮助下创建了以下内容: puts str.gsub(‘u00’, ‘\\u00’) 这导致了\u00a3输出。 这一切都很好,但我希望它在字符串本身是£。 只是说它是不够的。 做gsub(‘u00a3’, ‘£’)并不好gsub(‘u00a3’, ‘£’)因为毫无疑问我会缺少其他角色。 谢谢你的帮助。

清理ruby中的奇怪编码

我现在正在玩couchdb。 我正在尝试将一些博客数据从redis(键值存储)迁移到couchdb(键值存储)。 看来我可能从不同的博客引擎中迁移了这些数据(每个人都有一个爱好:)),似乎有一些编码snafus。 我正在使用CouchREST从ruby访问CouchDB,我得到了这个: 问题似乎是对象的body_html部分: <Post:0x00000000e9ee18 @body_html="[…..]Wie Sie bereits wissen, m\xF6chte EUserv k\xFCnftig seine […] 这些应该是变形金刚(“möchte”和“künftig”)。 知道如何摆脱这些问题吗? 我在插入之前尝试使用ruby 1.9编码function或iconv进行了一些转换,但还没有运气:( 如果我尝试使用ruby 1.9的.encode()方法将这些东西转换为ISO-8859-1,则会发生这种情况(不同的文本,相同的问题): #

Ruby`split’:UTF-8中的无效字节序列(ArgumentError)

我正在尝试填充电影对象,但在解析u.item文件时,我收到此错误: `split’:UTF-8中无效的字节序列(ArgumentError) File.open(“Data/u.item”, “r”) do |infile| while line = infile.gets line = line.split(“|”) end end 只有在尝试使用花哨的国际标点符号拆分行时才会发生错误。 这是一个样本 543 |Misérables,Les(1995)| 01-Jan-1995 || http://us.imdb.com/M/title-exact?Mis%E9rables%2C%20Les%20%281995%29 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | […]

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

由于MySQL的utf8不支持4字节字符,我正在寻找一种方法来检测并消除Ruby中字符串中的任何4字节utf8字符。 我知道我可以更新我的表使用utf8m4,但有几个原因是不可能的或所需的解决方案。 简单地将字符串编码为ASCII将删除这些字符,但也会删除所有其他非ASCII字符,这是不好的。

如何修复因编码错误而失败的Ruby脚本:US-ASCII上的“\ xD8”?

运行项目时出现以下错误: cucumber –format junit –guess –out ./ 这是错误: Checkout:workspace / /var/lib/hudson/jobs/PersOC-CucumberTests/workspace – hudson.remoting.LocalChannel@3b815cce Using strategy: Default Last Built Revision: Revision 3dc11ccba9c86308b422d6261ecde95d0a4ae999 (origin/master) Checkout:workspace / /var/lib/hudson/jobs/CucumberTests/workspace – hudson.remoting.LocalChannel@3b815cce Fetching changes from the remote Git repository Fetching upstream changes from /srv/git/cucumber.git Commencing build of Revision 14627f9a6682b82a9b4d64172278a646da358c24 (origin/master) Checking out Revision 14627f9a6682b82a9b4d64172278a646da358c24 (origin/master) [workspace] $ /bin/sh -xe /tmp/hudson6604637626131848657.sh […]

在rails中不兼容的字符编码 – 如何理智地失败/跳过?

我通过IMAP导入电子邮件主题时遇到问题。 我遇到了问题,我认为与电子邮件主题中的£符号有关。 花了几个小时游览各种答案我似乎无法找到任何有用的东西…如果我尝试以下… 使用ruby 2.1.2 views / emails / index =email.subject incompatible character encodings: ASCII-8BIT and UTF-8 =email.subject.scrub incompatible character encodings: ASCII-8BIT and UTF-8 = email.subject.encode!(‘UTF-8’, ‘UTF-8’, :invalid => :replace) invalid byte sequence in UTF-8 = email.subject.force_encoding(‘UTF-8′) invalid byte sequence in UTF-8 = email.subject.encode(“UTF-8”, invalid: :replace) “\xA3” from ASCII-8BIT to UTF-8 / xA3是’£’符号,不应该是那么不寻常。 我目前正在使用以下内容…… -if […]

在Ruby 1.8中将字符串简单转换为UTF-8

我知道在Ruby 1.9中你可以很容易地重新编码这样的字符串。 s = s.encode(‘UTF-8’) Ruby 1.8中的等价物是什么? 什么需要线条它需要。 我看到的所有教程都是不必要的复杂,我不明白发生了什么。

ruby 1.9,force_encoding,但检查

我有一个我从某种输入中读取的字符串。 据我所知,它是UTF8。 好的: string.force_encoding(“utf8”) 但是如果这个字符串中包含的字节实际上不是合法的UTF8,我现在想知道并采取行动。 通常,如果遇到这样的字节,force_encoding(“utf8”)会提高吗? 我相信它不会。 如果我正在做#encode,我可以从方便的选项中选择如何处理源编码(或目标编码)中无效的字符。 但是我没有做#encode,我正在做一个#force_encoding。 它没有这样的选择。 它会有意义吗? string.force_encoding(“utf8”).encode(“utf8”) 马上得到一个例外? 通常从 utf8 到 utf8的编码没有任何意义。 但是,如果存在无效字节,这可能是让它立即提升的方法吗? 或者使用:replace选项等来执行与无效字节不同的操作? 但是,不,似乎也无法做到这一点。 谁知道? 1.9.3-p0 :032 > a = “bad: \xc3\x28 okay”.force_encoding(“utf-8”) => “bad: \xC3( okay” 1.9.3-p0 :033 > a.valid_encoding? => false 好的,但是如何找到并消除那些坏字节? 奇怪的是,这不会引起: 1.9.3-p0 :035 > a.encode(“utf-8”) => “bad: \xC3( okay” 如果我转换为不同的编码,它会! 1.9.3-p0 :039 > a.encode(“ISO-8859-1”) Encoding::InvalidByteSequenceError: […]

如何处理数据以避免MySQL“错误的字符串值”错误?

我正在尝试使用Rake任务将一些遗留数据从MS Access迁移到MySQL。 我正在使用Ruby 1.8.6开发Windows XP。 我将Rails的编码设置为database.yml “utf8”。 此外,MySQL的默认字符集是utf8。 99%的数据都很好,但是我偶尔会得到一个列值,它会给我一个像这样的错误: Mysql::Error: Incorrect string value: ‘\x92 Comm…’ for column ‘name’ at row 1: INSERT INTO `organizations` ( […] ) VALUES(‘Lawyers’ Committee’, […] ) 看起来给MySQL带来麻烦的事情就是“律师”一词中的“s”之后的撇号。 这是另一个…… Mysql::Error: Incorrect string value: ‘\x99 aoc’ for column ‘department’ at row 1: INSERT INTO `addresses` […] ‘TRInfo™ aoc’ [….] 看起来它在“TRInfo”之后对“TM”感到窒息。 是否有任何Ruby或Rails方法可以运行数据来清除MySQL将要阻塞的任何字符? 理想情况下,用更可口的字符替换它们会很棒 […]

Ruby转换字符串编码从ISO-8859-1到UTF-8不起作用

我试图将一个字符串从ISO-8859-1编码转换为UTF-8,但我似乎无法让它工作。 这是我在irb中所做的一个例子。 irb(main):050:0> string = ‘Norrlandsvägen’ => “Norrlandsvägen” irb(main):051:0> string.force_encoding(‘iso-8859-1’) => “Norrlandsv\xC3\xA4gen” irb(main):052:0> string = string.encode(‘utf-8’) => “Norrlandsvägen” 我不确定为什么iso-8859-1中的Norrlandsvägen将在utf-8中转换为Norrlandsvägen 。 我已经尝试过编码,编码!,编码(destinationEncoding,originalEncoding),iconv,force_encoding,以及我能想到的各种奇怪的解决方法,但似乎没有任何效果。 有人可以帮助我/指出我正确的方向吗? Ruby新手仍然像疯了一样拉头发,但感谢所有回复… 🙂 这个问题的背景:我正在编写一个gem,它将从一些网站下载一个xml文件(将具有iso-8859-1编码)并将其保存在存储中,我想先将其转换为utf-8。 但像Norrlandsvägen这样的词语让我感到困惑 。 真的任何帮助将不胜感激! [更新]:我意识到在irb控制台中运行这样的测试可能会给我不同的行为,所以这里是我在实际代码中的内容: def convert_encoding(string, originalEncoding) puts “#{string.encoding}” # ASCII-8BIT string.encode(originalEncoding) puts “#{string.encoding}” # still ASCII-8BIT string.encode!(‘utf-8’) end 但最后一行给出了以下错误: Encoding::UndefinedConversionError – “\xC3” from ASCII-8BIT to UTF-8 感谢\xC3在下面的回答,我注意到如果你运行的话, \xC3实际上会显示在irb中: irb(main):001:0> […]