如何在Ruby正则表达式中使用Unicode字符?

3
我试图编写一行代码,以删除一行日语文本中的某个字符集。但是,我在正则表达式中使用unicode字符时遇到了麻烦。
我目前正在使用text.gsub(/《.*?》/u, ''),但是我遇到了错误。
'gsub': invalid byte sequence in Windows-31J (Argument error)

有人能告诉我我做错了什么吗?

例如文本: その仕草《しぐさ》があまりに無造作《むぞうさ》だったので

期望的结果: その仕草があまりに無造作だったので

谢谢

编辑:# encoding: utf-8出现在脚本顶部。


是的,我有。抱歉,我忘了提到它。 - SomberClock
我已经在irb中尝试了您的示例,并获得了预期的结果。看起来问题不是正则表达式,而是text的编码方式。text是从哪里来的?从文件中读取吗? - Limbo Peng
你可以看一下这个链接:https://dev59.com/XXVC5IYBdhLWcg3wjx1d - Nevin
我确实正在从文件中获取文本,LimboPeng。 - SomberClock
文件本身是以UTF-8编码保存的吗?顺便说一句,这段代码在我的电脑上运行良好,所以我认为你本地的设置出了些问题。 - joeellis
该文件根据Notepad++是以UTF-8编码。 - SomberClock
1个回答

2

试试这个:

text.encode('utf-8', 'utf-8').gsub(/《.*?》/u, '')

请解释一下为什么,因为你所说的对我来说没有意义。 - tchrist
为什么不是已经那样了?这是 Ruby 字符串从未被正确解码的普遍 bug 吗?你不应该不得不这样做。 - tchrist
2
@tchrist 当你从外部文件读取文本时,它的编码可能不是UTF-8,并不一定正确。 - Limbo Peng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接