Blogger:JavaScriptのpromptやalertで句読点を表示する方法


Bloggerの投稿画面のHTMLモードのJavaScriptで、promptやalertで句読点「。」や「、」を表示させるとそれぞれ「&#12290」や「&#12289」と表示されてしまいます。

「リンクを編集」に入力したJavaScriptでは問題なし


Blogger投稿画面をHTMLモードにして次のようなJavaScriptを貼り付けてみます。
<script>
prompt("全角。、「」{}半角。、「」{}");
</script>
そしてページを公開してみるとダイアログがでるのですが半角の{}以外の記号がすべてコード表示になってしまいます。


promptだけでなくalertで表示させても同じ結果です。

今度は同じJavaScriptを投稿画面の編集モードにしてリンクに書き込んでみました。
javascript:prompt("全角。、「」{}半角。、「」{}");
これをリンクボタンを押して出てくるダイアログのリンク先:ウェブアドレスに入力します。


ページを公開してリンクをクリックしてみると、


ちゃんと表示されています。

このリンクの部分をHTMLモードで見てみると日本語部分が置き換わっています。
<a href="javascript:prompt(&quot;%E5%85%A8%E8%A7%92%E3%80%82%E3%80%81%E3%80%8C%E3%80%8D%EF%BD%9B%EF%BD%9D%E5%8D%8A%E8%A7%92%EF%BD%A1%EF%BD%A4%EF%BD%A2%EF%BD%A3{}&quot;);">リンク</a>
これは「UTF-8(URLエンコード)」というコードのようです。

このUTF-8をpromptで表示させれば記号も表示されるのかな、と思ってやってみましたが、とくに日本語に変換されるわけでもなくそのまま書いたとおりに表示されただけでした。

¥uXXXX XXXXはUTF-16とすればいけることがわかりました


解決法がないと思って最初は記事を書いたのですが解決しました。

\u(UTF-16のコード)と記載すればいけました。

エンコード/デコード ツール - 文字列をエンコードおよびデコードの変換ツールを使えば簡単にできます。


「変換対象の文字列」の欄に変更したい文字をいれて「変換ボタン」をクリックします。

Unicodeのencodeの欄にでてくるのがUTF-16に変換されたものです。

これをこのままpromptに入れてみます。
<script>
prompt("\u5168\u89d2\u3002\u3001\u300c\u300d\uff5b\uff5d\u534a\u89d2\uff61\uff64\uff62\uff63{}");
</script>

問題なく表示されました。

文字コードはいろいろあってややこしいですね。

\は¥と同じです。

ところどころによって見え方が変わるのはなぜでしょう?

参考にしたサイト


特殊な文字の入力(エスケープシーケンス) - JavaScriptのデータ型 - JavaScript入門
¥uXXXX 4桁のXXXX(16進数)が表すUnicode文字=UTF-16ということでした。

Unicode対応 文字コード表
UTF-16の一覧表が載っています。

エンコード/デコード ツール - 文字列をエンコードおよびデコード
UTF-16(Unicode)へ変換解読してくれます。
PR

1 件のコメント:

  1. 記事公開時はやりかたがわからないとして書いたのですが、解決法が見つかったので大幅に書き換えました。

    返信削除