MovableTypeにて、entrytitleやentrybody内の文字列にダブルクオテーション「"」を使うと、javascriptを使用した際にエラーになってしまいます。
以前、この問題で悩んだ際に解決方法を教えてもらったような、検索したような気がしますが、急に対応が必要でなかったこともあり放っておいてしまいました。今、対応が必要となり探ります。
MT タグとあわせて利用する「グローバル・モディファイア」というものがあるようです。アトリビュートですね。
まずは、replaceというものがあるようです。
たとえば、「&」を「&」に置き換えるには
<$mt:entrytitle replace="&","&"$>
となります。
便利そうですが、今回の「"」の置き換えは、これで解決できそうにありません。
ここで、違うグローバルモディファイアを発見しました。
Movable Typeの『グローバル・モディファイアリファレンス』(encode_htmlとかencode_js)
-----
●encode_js
javascriptで「"」を入れるとエラーになるので変換してくれます。
「"」を「¥"」という形に変換してくれます。
『<$mt:EntryTitle encode_js="1" $>』
こんな感じで使用します。
-----
1 に設定すると、MT タグの値が javascript の文字列の値として使えるようにエンコードするようです。解決方法はまさにこれです。
この他にも
●encode_html
1 に設定すると、MT タグの値が 「<」を「<」、「&」を「 」などの形にHTMLエンコード
↓
『<$mt:EntryTitle encode_html="1" $>』
こんなのが、かなり使えそう。助かりました。
原因は 『設定』>『ブログ記事』 内で、「Word特有の文字を置き換える」で特有の文字が1バイトASCII文字に置き換えられている。つまり、Wordなどで表現できる機種依存文字を自動的に判断して文字化けなどが無いように置き換えてくれる、という機能のようだ。対象にするフィールドまで選ぶことができるので、親切といえば親切だ。
ただ、そもそも、三点リーダーが機種依存文字か?という疑問はある。クオーテーションなども対象となっている。
Movable Typeではデフォルトの設定でこの機能がオンになっているよう。なので、置き換え不要の場合、オフにすればオッケー。