Я работаю над приложением rails 3.1 с ruby 1.9.3 и mongoid в качестве ORM. Я столкнулся с неприятной проблемой. Я хотел бы обрезать содержимое сообщения следующим образом:
<%= raw truncate(strip_tags(post.content), :length => 200) %>
Я использую raw
и strip_tags
, потому что мой post.content
на самом деле обрабатывается в редакторе форматированного текста.
У меня серьезная проблема с символами, отличными от ASCII. Представьте, что содержание моего поста следующее:
éééé éééé éééé éééé éééé éééé éééé éééé
То, что я делаю выше наивным образом, делает это:
éééé éééé éééé éééé éééé &eac...
Похоже, что truncate видит каждое слово строки, например é&eactute;éé
.
Есть ли способ:
- Обрабатывать ли усечение фактические строки UTF-8, где 'é' обозначает один символ? Это был бы мой любимый подход.
- Взломайте приведенную выше инструкцию, чтобы результат был лучше, например, заставить рельсы обрезать между двумя словами,
Я задаю этот вопрос, потому что до сих пор не нашел никакого решения. Это единственное место в моем приложении, где у меня возникают проблемы с таким персонажем, и это серьезная проблема, поскольку весь контент веб-сайта на французском языке, поэтому содержит много é, ç, à, ù
.
Кроме того, я думаю, что такое поведение весьма неудачно для помощника truncate
, потому что в моем случае он усекает не 200 символов, а примерно 25 символов!
post.content
UTF-8 é или сущность HTMLé
? - person mu is too short   schedule 09.02.2012