Rails to_s Mechanics

时间:2013-03-23 18:31:50

标签: ruby-on-rails ruby special-characters

嘿,伙计们,这让我很沮丧。所以这是一般性问题:

我正在编写一个应用程序,要求用户从传奇联盟中输入召唤者名称。我做了一个非常简单的匹配数据,并将数据输入我的数据库。不幸的是,我在使用“特殊字符”注册用户时遇到了一些错误。

对于这个例子,我将使用一个问题用户:RIÇK

正如你所见,RICK!=RIÇK。因此,当我从站点进行数据清理时,我得到了正确的值,我将其推入阵列以供以后使用。

一旦我需要播放器名称,我按如下方式从数组中拉出:(player_names是数组)

@temp_player = User.find_by_username(player_names[i].to_s) 

问题是没有拉出任何特殊字符的用户。我不应该使用find_by吗? to_s是否改变了我的原始值?我真的很遗憾该怎么做,非常感谢任何帮助/建议。

提前致谢,

1 个答案:

答案 0 :(得分:0)

我要感谢Brian Kung提供以下链接:joelonsoftware.com/articles/Unicode.html它做得非常出色,只需要程序员真正需要了解。

对于我的特定问题,我使用HTML scraper来获取内容,但始终保留HTML条目。在我的SQL查找中使用这些时,显然没有找到任何东西。为了解决这个问题,我使用了HTMLEntities Gem来解码文本,如下所示(只要我最初放入数组中):

requires 'RubyGems' #without this cannot include htmlentries as a gem
requires 'HTMLEntries' 

coder = HTMLEntries.new

line = '<'
player_names.push(coder.decode(line))

The Takeaway

使用文本时,如果遇到错误,我强烈建议您将正在使用的字符串跟踪到原点,并真正了解每个进程中使用的编码。通过这样做,您可以轻松找到出错的地方。