我正在使用rails 3.1应用程序ruby 1.9.3和mongoid作为我的ORM。我正面临一个烦人的问题。我想截断后的内容是这样的:Rails截断包含&eacute的UTF-8字符串; (例如)
<%= raw truncate(strip_tags(post.content), :length => 200) %>
我使用raw
和strip_tags
,因为我post.content
实际上是与富文本编辑器来处理。
我有一个非ASCII字符的严重问题。想象一下,我的帖子内容如下:
éééé éééé éééé éééé éééé éééé éééé éééé
什么我上面做一个简单的方式做到这一点:
éééé éééé éééé éééé éééé &eac...
貌似截断是看到像é&eactute;éé
字符串的每一个字。
有没有办法要么:
- 有截断处理实际UTF-8字符串,其中“E”代表一个字符?那将是我最喜欢的方法。
- 哈克上述指令这样的结果是更好的,像力导轨2个字之间截断,
我问这个问题,因为我还没有发现任何解决至今。这是我应用程序中唯一存在这种字符问题的地方,因为网站的全部内容都是法文的,所以它是一个主要问题,因此包含大量的é, ç, à, ù
。
此外,我认为这种行为是相当不幸的truncate
帮手,因为在我的情况下,它根本不截断200个字符,但约25个字符!
是否'post.content'使用UTF-8é或HTML'&eacute;'实体? – 2012-02-09 08:43:10
好问题。我如何检查?我敢打赌&eacute。我知道这可能是一个更大问题的症状,我只想把我的问题集中在一些特定和简单的问题上。所以也许有办法通过确保mongo存储UTF-8字符串来处理整个事情,但我不知道如何检查.. – rpechayr 2012-02-09 08:47:00
@ muistooshort我更新了我的问题以更好地反映情况。我在条纹html字符串的上下文中。它有帮助吗? – rpechayr 2012-02-09 08:51:36