无法在Ruby中比较UTF-8 CHR

无法在Ruby中比较UTF-8 CHR,ruby,cucumber,Ruby,Cucumber,我使用Ruby-Cucumber实现自动化 我试图将日文字符作为参数发送给用户定义函数,以便在db中进行验证 以下是我使用的语句: x=$objDB.run\u select\u query\u verifyText('select name from xxxx,其中id=1','ごせり槎ゃぱ') 在run_select_query_verifyText()函数中,我有连接数据库并从数据库获取记录的代码,它将验证作为参数传递的文本(日文字符) 如果字符串与DB else false中的表数据匹配

我使用Ruby-Cucumber实现自动化

我试图将日文字符作为参数发送给用户定义函数,以便在db中进行验证

以下是我使用的语句: x=$objDB.run\u select\u query\u verifyText('select name from xxxx,其中id=1','ごせり槎ゃぱ')

在run_select_query_verifyText()函数中,我有连接数据库并从数据库获取记录的代码,它将验证作为参数传递的文本(日文字符)

如果字符串与DB else false中的表数据匹配,则此函数返回true

但我总是错的,我发现在比较数据时,日语字符串转换为“???????”


注意:我的程序可以很好地使用英文字符。

您的问题很可能是字符编码。数据库以与您使用的Ruby字符串不同的编码返回内容。您需要确定db编码是什么,并确保两者相同

如果您使用的是ruby 1.9,则可以使用
yourstring.encoding
检查编码当前编码,并将其更改为UTF-8,例如使用
yourstring.encode(“UTF-8”)
。 如果您使用的是ruby 1.8,那么事情就有点棘手了,因为String类本身不支持编码。您可以使用gem来解决这个问题