ここから本文です

JavaScriptでHTML特殊文字を、実体参照(≤など)で表示する方法を教えてくださ...

q9l_xさん

2014/4/906:54:48

JavaScriptでHTML特殊文字を、実体参照(≤など)で表示する方法を教えてください。

現在、Webシステムの海外対応として、Webサイトの英語版を作っています。
下記のサイトを見て、「英語版のサイトでは全角文字が使えないので、HTMLの特殊文字を使うべき」ということを知りました。
http://stardust-f.com/english_and_copyright/englishweb/03.html
そこで、HTMLファイルで使われている全角文字をHTML特殊文字の実体参照に置き換えています。

コードには、以下のようにJavaScriptで文字を設定している箇所もあります。
・alert("0≦x≦100の数値を入力して下さい。");
・document.getElementById("error").textContent = "0≦x≦100の数値を入力して下さい。";

全角文字「≦」をHTML特殊文字「≤」に置き換えましたが、
「0≤x≤100の数値を入力して下さい。」と、実体参照の値がそのまま表示されてしまいます。

JavaScriptでHTML特殊文字を表示するには、どうすればよいでしょうか?

また、そもそも英語版サイトでは本当に全角文字を使ってはいけないのでしょうか?
HTMLファイルに、
<p>&alpha; α</p>
と、ギリシャ文字アルファを実体参照と全角文字の両方で記述して、ブラウザで確認しましたが、表示に違いはありませんでした。
そこから、「HTML特殊文字も全角文字なのでは?」と思ったのですが、この考えは正しいのでしょうか?

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
1,881
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

niconicolsdさん

2014/4/1209:54:05

JavaScriptでは、Unicodeのエスケープシーケンスを"\u(16進数4桁)"のように書きます。
"≦"のUnicode値は8806(==0x2266) なので、"\u2266"と書くことができます。


alert("≦" == "\u2266"); // true
alert("0\u2266x\u2266100の数値を入力して下さい。");


ある文字のUnicode値を調べる方法はいろいろありますが、JavaScriptを使う方法もあります。


alert("≦".charCodeAt().toString(16)); // "≦"のUnicode値を16進数に変換したものを表示


まあ、"の数値を入力して下さい。"の部分も全角文字ですので、この部分も変えないと意味がないですが(笑)
そもそも、日本語でアラーとを表示している時点で、英語圏の人はサイトの対象外になりますので、"≦"などを気にする必要はありません。
したがって、上で述べたエスケープを施すことは、ほぼ無意味です。

質問した人からのコメント

2014/4/14 23:37:46

GoogleのHTMLコーディング規約に、
「不要な実体参照は使用しないこと。
UTF-8においては、—(—)・”(”)・☺(☺)のような文字は実体参照を使う必要はない。」
と記載してあったので、どうやら特殊文字の実体参照を使う必要はなかったみたいです。
http://re-dzine.net/2012/05/google-htmlcss-style-guide/
http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml#...
お手数をおかけして、すみません。

ベストアンサー以外の回答

1〜1件/1件中

rtscpさん

2014/4/1114:48:36

文字/実体参照やタグを使いたいのであれば、「textContent」の代わりに「innerHTML」を使用すれば良いかと思います。
「alert」に関してはスマートな方法が思いつかないのですが、「String.fromCharCode」などで直接文字コードを指定するか、一旦HTML側に設定したものを取得し直すなどのトリッキーな方法はありそうです。
HTMLの文字コードがUnicode系であれば、Unicodeを扱えるエディタで直接入力してしまうのも手でしょう。
余りお力になれず申し訳ありません。

文字コードの話は長くなるため割愛しますが、誤解を恐れず簡単にご説明しますと、日本語環境における所謂「全角文字」は内部データ的には「日本語」の扱いとなっています。
「全角記号」も「全角英数字」も同様です。

英語版サイトであれば、日本語が表示出来ない環境でも閲覧されると想定する必要があるため、「日本語」である「全角文字」は使用を避ける必要があるということだと思います。
実体参照による特殊文字は、見た目が「全角文字」と差異が無くても、その大半は内部的には全く異なるデータです。
このため取り扱い方を誤ると、表示出来なかったり文字化けを生じることになります。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

5文字以上入力してください

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。