Tag: 编码

从Rails 3.0.3中的URL正确地替换特殊字符

我正在使用Rails 3.0.3和REE(Ruby 1.8.7)和gem’mysql2’,’0.2.6′ 我的项目中有一个搜索function,可以让人们使用URL或使用表单来使用GET方法,然后生成URL。 例: 我想搜索: 起源城市:“ Århus,丹麦 ”和目的地城市:“ Asunción,Paraguay ” 它们都有一个特殊的字符:“ Å ”和“ ó ”,所以当有人点击搜索按钮时,会生成这样的URL。 ?&origin=%C5rhus%2C%20Denmark&destination=Asunci%F3n%2C%20Paraguay 问题: 当我搜索那个城市时,它并没有像我想要的那样(我尝试使用像CGI,URI,甚至一些gem)。 当我在控制台看到时,ActiveRecord收到了这样的查询: Parameters: {“destination”=>”Asunci n, Paraguay”, “origin”=>” rhus, Denmark”, “sort”=>”newest”} City Load (0.1ms) SELECT `cities`.* FROM `cities` WHERE (`cities`.`name` = ‘ rhus’) ORDER BY cities.name ASC City Load (6.8ms) SELECT `cities`.* FROM `cities` WHERE (`cities`.`name` = ‘Asunci […]

UTF-8是Ruby v.2中的默认编码吗?

Matz在他的书中写道,为了使用UTF-8,你必须在脚本的第一行添加编码注释。 他举了一个例子: # -*- coding: utf-8 -*- # Specify Unicode UTF-8 characters # This is a string literal containing a multibyte multiplication character s = “2×2=4” # The string contains 6 bytes which encode 5 characters s.length # => 5: Characters: ‘2’ ‘x’ ‘2’ ‘=’ ‘4’ s.bytesize # => 6: Bytes (hex): 32 c3 97 […]

ActiveRecord在Ruby 1.9.2-rc1下以ASCII-8Bit返回数据

除了标题之外,当从ActiveRecord加载数据时,尽管我尽最大努力强制编码,但编码始终设置为ASCII-8Bit。 我已经在这里输入了尽可能详细的信息,试图建立一个可以用来帮助我的好错误报告! 该项目使用以下技术: Padrino框架 Ruby 1.9.2-rc2(同样是1.9.1和1.9.2-preview3) ActiveRecord的 MySQL的 (完整名单) $ bundle show | ack ‘(record|padrino)’ * activerecord (2.3.8) * padrino (0.9.14) * padrino-admin (0.9.14) * padrino-core (0.9.14) * padrino-gen (0.9.14) * padrino-helpers (0.9.14) * padrino-mailer (0.9.14) 剧集表: mysql> DESCRIBE `episodes`; +—————-+————–+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra | +—————-+————–+——+—–+———+—————-+ […]

mysql2 gem 0.3.15给出ASCII-8BIT,编码设置为“utf8”

我使用MySQL 5.1.71和Rails 4.0.4在Ruby 2.0.0-p353上运行(通过rbenv + ruby​​-build),使用mysql2 gem 0.3.15。 CentOS 6.5。 在database.yml中,编码设置为“utf8”,适配器为“mysql2”,适用于所有环境。 我的表都使用UTF-8,“DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci”。 在Ruby中, Encoding::default_internal == Encoding::default_external == Encoding::UTF_8 。 关于ActiveRecord为什么还给我ASCII-8BIT字符串的原因,我还能看到其他任何想法? 我在Mac上开发了UTF-8,但在Linux上生产的是ASCII-8BIT。 当我启动一个控制台并直接使用mysql2时,我得到了ASCII,所以这似乎是问题所在。 mysql> SHOW VARIABLES LIKE ‘character_set%’; +————————–+—————————-+ | Variable_name | Value | +————————–+—————————-+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | […]

清理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 .chr和.ord方法

我最近一直在使用Ruby chr和ord方法,有一些我不明白的事情。 我当前的项目涉及将单个字符转换为序数值。 据我了解,如果我有一个字符串,其中包含一个单独的字符,如“A”,我调用ord就可以在ASCII表上找到它的位置65.调用反转, 65.chr给我字符值“A “,所以这告诉我Ruby有一个有序字符值的集合,它可以使用这个集合给我一个特定字符的位置,或者特定位置的字符。 我可能错了,请纠正我,如果我。 现在我也明白Ruby的默认字符编码使用UTF-8,因此它可以使用数千个可能的字符。 因此,如果我问这样的事情: ‘好’.ord 我得到该字符的位置是22909.但是,如果我在该值上调用chr : 22909.chr 我得到“RangeError:22909超出char范围。” 我只能使用char来处理最大为255的值,即扩展的ASCII。 所以我的问题是: 为什么Ruby似乎从扩展的ASCII字符集中获取chr值,但是从UTF-8开始? 有没有办法告诉Ruby在使用这些方法时使用不同的编码? 例如,告诉它使用ASCII-8BIT编码而不是它的默认值? 如果可以更改默认编码,是否有任何方法可以获取正在使用的集合中可用的字符总数?

安装RDoc文档时出错:不兼容的编码正则表达式匹配

在过去一周,在一些gem安装或gem更新操作中,我收到了类似这样的错误: 错误:为sinatra-1.3.1生成文档时… MESSAGE:生成错误C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/doc/sinatra-1.3.1/rdoc/README_de_rdoc.html :不兼容的编码regexp匹配(UTF-8 regexp与IBM437字符串)(Encoding :: CompatibilityError) 类似的: 错误:为rest-client-1.6.7生成文档时… MESSAGE:生成错误C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/doc/rest-client-1.6.7/rdoc /README_rdoc.html:不兼容的编码regexp匹配(UTF-8 regexp与IBM437字符串)(Encoding :: CompatibilityError) 可能还有一个地方。 我已经读过这篇文章,但是找不到我没写的代码和我无法控制的数据的解决方案。 知道如何解决这个问题吗?

在Ruby 1.9.X中等效的Iconv.conv(“UTF-8 // IGNORE”,…)?

我正在从远程源读取数据,偶尔会在另一个编码中获得一些字符。 它们并不重要。 我想获得一个“最佳猜测”utf-8字符串,并忽略无效数据。 主要目标是获取我可以使用的字符串,而不是遇到如下错误: 编码:: UndefinedConversionError:从ASCII-8BIT到UTF-8的“\ xFF”: utf-8中的字节序列无效

多字节字符是否会干扰正则表达式中的终结字符?

有了这个正则表达式: regex1 = /\z/ 以下字符串匹配: “hello” =~ regex1 # => 5 “こんにちは” =~ regex1 # => 5 但是这些正则表达式: regex2 = /#$/?\z/ regex3 = /\n?\z/ 他们表现出差异: “hello” =~ regex2 # => 5 “hello” =~ regex3 # => 5 “こんにちは” =~ regex2 # => nil “こんにちは” =~ regex3 # => nil 什么是干扰? 字符串编码是UTF-8,操作系统是Linux(即$/是”\n” )。 多字节字符是否会干扰$/ ? 怎么样?

Ruby 2.0中的二进制字符串文字

升级到Ruby 2.0时,测试用例开始失败: expected = “\xD1\x9B\x86” assert_equal expected, actual 以下消息: expected but was . actual变量包含从外部库调用获得的二进制字符串。 问题是源文件的默认编码(以及字符串文字) 在Ruby 2.0中从US-ASCII更改为UTF-8。