シングルコーテーション(') をエスケープしようと思った話 ["ブログ"]
当ブログ記事の本文について、今後は、「'」と「"」をエスケープするようにします。
• 経緯
私は記事を書くにあたって、今まで、シングルコーテーションやダブルコーテーションはエスケープしていませんでした。それは、そのまま使っても画面表示上は特に問題が無いように思われたからです。なお、「<」と「>」については、そのまま表示したい時には、手作業(テキストエディタで置換)でエスケープしていました。しかし、「'」と「"」についてもエスケープしたほうが好ましいという情報を聞きました。
• ChatGPTに聞いてみた
そこで、ChatGPT に以下のメッセージを送ってみました。
「HTMLの本文中でエスケープが必要になる文字をすべて挙げてください。」
ChatGPT は以下の文章を出力しました。
アンパサンド (&)
エスケープ: &
理由: 他のエンティティの開始を示すため、必ずエスケープが必要です。
小なり (<)
エスケープ: <
理由: タグの開始と誤解されないようにエスケープが必要です。
大なり (>)
エスケープ: >
理由: タグの終了と誤解されないようにエスケープが必要です。
二重引用符 (")
エスケープ: "
理由: 属性値で使用する際に囲むためにエスケープが必要です。
一重引用符 (')
エスケープ: ' または '
理由: 属性値内や文字列の境界を明確にするためにエスケープが必要です。
私は今まで、「'」と「"」はエスケープしていませんでしたが、今後はエスケープしようと思いました。ちなみに私は、文章を段落で区切るとき、pタグ (<p>) で手作業で囲っていますので、「<」と「>」については、自動でエスケープされると逆に困ってしまいます。また、「&」も、「<」などと書きたいときに自動でエスケープされると不都合があります。そのため、私にとって今エスケープしたいのは、「'」と「"」の2文字です。この2文字をエスケープするPythonのコードを以下に示します。
def __escape(self, txt):
 buf = txt.replace("\"", """)
 buf = buf.replace("'", "'")
 return buf
• まとめ
私は今まで、シングルコーテーションとダブルコーテーションをエスケープしていませんでしたが、今後はエスケープしようと思いました。なお、シングルコーテーションについては、エスケープしてもしなくてもどちらでもいいようですが、Googleの下記ページ*では、ソースを見てみると「'」を「'」でエスケープしていますので、私もそれを真似しようと思います。
ad: