1

何らかの理由で、HTMLエスケープが私のRailsアプリケーションで機能していません。こんなこと書いても

<%=h '©äö' %> 

どの文字もHTMLエンティティに変換していません。

私には何ができるのか分かりません。それは常にうまく機能しましたが、今では突然機能しなくなりました。

何か案は?

4

3 に答える 3

8

öおよびäHTML で有効な文字です。HTML エンティティが存在する場合でも、エスケープする必要はありません。これらのエンティティは便利であり、必須ではありません。宣言されたエンコーディング (HTTP ヘッダー) と実際の文字エンコーディングが一致する限り、文字どおりに発生しても問題ありません。

常にエスケープする必要がある唯一の文字は、XML のように<>&およびです。"

于 2009-09-26T17:33:27.100 に答える
2

h は、HTML の特殊文字 <、>、&、および " のみを置き換えると言えます。h 関数の背後にあるRails のERB::Util.html_escapeのドキュメントを参照してください。

于 2009-09-26T17:34:20.593 に答える
1

Google サイトマップでは URLを完全にエスケープする必要があるため、この場合はすべての特殊文字と国際文字をエスケープする必要があります。

このhtmlentitiesライブラリがそれを行います。

に小さなラッパーを書きましたapplication_helper.rb

def html_entity_escape(s)
  require 'htmlentities'
  @html_coder ||= HTMLEntities.new
  @html_coder.encode(s)
end
于 2010-01-13T09:41:14.957 に答える