Bloggerに書いたJavascriptが文字化けする

Google Bloggerの投稿やページの本文にはJavascriptを直接書くことができます。だいたいのコードは、そのまま動くのですがたまに意図しない動きになるときがあります。


この時、問題のJavascriptのコードをブラウザのデベロッパーツールのコンソールなどで実行すると正しく動くのに、Bloggerの本文に書くと動きません。

これは、Bloggerが一部の漢字をコード化(&#xxx;)するために発生します。

例えば、下にようにBloggerに書きます。

この時に、実際に生成されるHTMLコードは以下のように文字列中の文字の一部が&#xxx;の形になってしまいます。

これを防ぐ方法はないようですが、すべての漢字がこうなるわけではありません。試した限りでは主に記号がこうなるようです。

12345678901234567890
ABCDEFGHIJ ABCDEFGHIJ
{@[+*};:]?{@[+*};:]?
あいうおか漢字表示あいうおか漢字表示


解決方法1 あらかじめエンコードしておく

問題の文字列の場所がわかっていて数が少ない場合は、事前にencodeURIでエンコードした文字列をソースコードに書いて、decodeURIでデコードして使う方法があります。


解決方法2 INPUTのVALUEに書いておく

<INPUT TYPE="hidden">の値として書いて置いて、Javascriptでそれを取り出して使う方法があります。

下の例では、<input ... value="【MY TEXT】">の"【MY TEXT】"が、Javascriptの中で使いたい文字列です。この部分は、実際のBloggerが変換したHTMLでは、<input ... value="&#12304;MY TEXT&#12305;">となっていますが、もちろん表示はただしく、【MY TEXT】javascriptとなります。