何らかの理由で、HTMLエスケープが私のRailsアプリケーションで機能していません。こんなこと書いても
<%=h '©äö' %>
どの文字もHTMLエンティティに変換していません。
私には何ができるのか分かりません。それは常にうまく機能しましたが、今では突然機能しなくなりました。
何か案は?
何らかの理由で、HTMLエスケープが私のRailsアプリケーションで機能していません。こんなこと書いても
<%=h '©äö' %>
どの文字もHTMLエンティティに変換していません。
私には何ができるのか分かりません。それは常にうまく機能しましたが、今では突然機能しなくなりました。
何か案は?
ö
およびä
HTML で有効な文字です。HTML エンティティが存在する場合でも、エスケープする必要はありません。これらのエンティティは便利であり、必須ではありません。宣言されたエンコーディング (HTTP ヘッダー) と実際の文字エンコーディングが一致する限り、文字どおりに発生しても問題ありません。
常にエスケープする必要がある唯一の文字は、XML のように<
、>
、&
およびです。"
h は、HTML の特殊文字 <、>、&、および " のみを置き換えると言えます。h 関数の背後にあるRails のERB::Util.html_escapeのドキュメントを参照してください。
Google サイトマップでは URLを完全にエスケープする必要があるため、この場合はすべての特殊文字と国際文字をエスケープする必要があります。
このhtmlentitiesライブラリがそれを行います。
に小さなラッパーを書きましたapplication_helper.rb
:
def html_entity_escape(s)
require 'htmlentities'
@html_coder ||= HTMLEntities.new
@html_coder.encode(s)
end