- ベストアンサー
HTMLソースの文字コードがutfの場合、文字化け回避のために<!--龠龠龠--> や <!--京-->といったおまじないは意味なし?
前提として、当方、文字コードについての文章を何度読んでも理解できていないのですが・・・ ============================================================== http://blog.goo.ne.jp/ のHTMLソースにあるように、 EUCのソースでは、<!--龠龠龠-->という文字列をページの銭湯のほうにおいて、UAによる文字化けのみすを防いでいるようです。 http://www.shtml.jp/mojibake/binew.html から引用しますと、 ==================================================== Shift_JISにおいては、2バイト文字の2バイト目は0x40~0x7E、0x80~0xFCの範囲にあります。 したがって、0xFDや0xFEは使われていません。 これらのコードを持つ文字がもし現れているのならば、 ブラウザはShift_JISでないとすぐに判断できるはずですから、 文字化けが発生しないという理屈です。 では、EUC-JPにおいて2バイト目が0xFD及び0xFEを持つ文字とはどのような文字でしょうか? EUC-JPの存在領域から考えて、1バイト目は0xA1~0xFEになります。ここでプログラムで出力しますと (中略) ==================================================== 。。。。ということで、 「龠」という文字は、2バイト文字目が0xFEとなるEUC-JPという理屈だそうです (ちなみにYahoo!Japanは以前SJISを用いていたとき、同様の理屈からか「<!--京-->」というソースをページの先頭のほうにかいていました。 なお、Yahoo!Japanは今はutf8です。(Yahoo!の全サービスでそうなのかはわかりかねますが)) ・・・と思ったら、 http://earthproject.yahoo.co.jp/ のページではEUCで、 <!--京-->というHTMLソースがありました。 そこで、質問なのですが、 HTMlファイルがUTF8の場合は、こういったコザイクは無意味というか無駄なのでしょうか? あるいはもし意味があるとすれば、どういった文字列をHTMLのコメントに書いておけばいいのでしょうか? 文字コードの仕組みが分かっていれば、こういうしつもんもしないかもしれないですが。。。 === なお、どこかで、ApacheやPHPがいじれるのならば、httpヘッダを送る段階で、utf8だとUAに対して名言して出力してしまえば、 このような問題は起こらない、というような内容の文章をどこかで見かけたような記憶もするのですが、 とりあえず、それは不可能という前提で、教えていただければと思います。 以上、よろしくお願いいたします。
- daisuke_dm
- お礼率81% (595/727)
- HTML
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> (ちなみにYahoo!Japanは以前SJISを用いていたとき、同様の理屈からか「<!--京-->」というソースをページの先頭のほうにかいていました。 Yahoo! JAPANは以前はサービス全体でEUC-JPを使用していました。 少なくてもトップページはEUC-JPでした(SJISではないですよ)。 Y!の <!--京--> もやはり文字化け対策として入れられていたようですが 本当に効果があったかどうかは定かじゃありません。 そもそも、エンコードの機械判別は厳密には難しいでしょう。 ページの先頭何文字かに含まれるエンコードとContent-typeに出力 されたcharset及びmetaタグのcharsetやブラウザの言語コードなどから 判別しようとするようですがこれが存在しなかったり間違っていたり する場合も多いです。 (IEは判別できなかったり間違っているとOSのデフォルトロケールを 使用しようとする事があるみたいですが) なお、本当に適切なHTMLなら必ずtitleタグの前に文字コードを指定 しておきましょう。 完全に間違いがなくブラウザ側が判別できるエンコードなら通常、 文字化けが起こることはないはずです(それでも確実とは言えませんが)。
その他の回答 (2)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2281)
> HTMlファイルがUTF8の場合は、こういったコザイクは無意味というか無駄なのでしょうか? UTF-8でも文字化けの可能性はありますが、 文字コードが指定されていれば、まともなブラウザであれば文字化けは起こりません。 httpヘッダの替わりに <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> というのがありますが、これは使えませんか? > http://earthproject.yahoo.co.jp/ > のページではEUCで、 > <!--京-->というHTMLソースがありました。 <title>の前に入れないと意味はないと思います。 <meta>が最初に入ってるので文字化けはしませんが。
意味はありますが、たまに起こる文字化けの中でEUCが最も頻度が高いようなのであまり使うことはないと思います。 macのsafariで起こる問題のようなので、実際に確認されてみてはどうでしょう? 環境が手元に無い場合、スクリーンショットを取ってくれるサービス等もあるのでそちらを利用してみると良いかもしれません。
関連するQ&A
- HTMLの文字化けについて
HTMLの文字化けについて クライアントPC(WindowsVista)で作成したHTMLファイルをサーバ(CentOS5.4)にアップして、ブラウザから確認してみたところ、文字化けを起こしてしまいました。 ローマ字は問題ないのですが、日本語が文字化けしてしまっており、表示がめちゃくちゃになってしまっています。 HTMLはK2Editorにて作成して、文字コードはShift-JIS、改行コードはCRLFとしております。 しかし、文字化けした状態でブラウザの文字エンコーディングをEUC-JPに変えて再度読み込んでみたところ、文字化けせずに表示されます。 サーバ側の文字コードは、 # vi /etc/sysconfig/i18n LANG="ja_JP.EUC-JP" と設定し、デフォルトのUTF-8からEUC-JPに変えております。 なので、もしかしたらサーバ側の文字コードとHTMLの文字コードが何か関係しているのかと私は思うのですが・・・ 文字化けの原因がお分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。
- ベストアンサー
- HTML
- Webプログラミングで文字コードがUTF-8である意味
最近では、結構色んなサイトで文字コードにUTF-8が利用されていますが、 EUC-JPでない理由はあるのでしょうか? UTF-8であるメリット、EUC-JPであるデメリットが分かりません。 どなたがご教示下さい。
- ベストアンサー
- その他(プログラミング・開発)
- 文字コード【utf-8】のHTMLを
charset=utf-8で作成されているHTMLをDreamweaverで開くと テキストが文字化けしてしまいます。 他のテキストエディタで文字コードをUnicodeに設定して開いた場合も Web上で「ソースコードの表示」でソース表示してもやはり同じく文字化けしてしまいます。 この場合、どうしたら文字化けせずにソースを表示することができますか? できればDreamweaverで開けるとありがたいのですが・・・ アドバイスいただけると助かります。 どうぞ宜しくお願い致します。
- ベストアンサー
- HTML
- "京"の文字化けで困っています。
"京"の文字化けで困っています。 postgres 7.2.4 サーバを使用し、サーバ側でECPG(埋込SQL)にて、 S-JISのCSVファイルを読込、EUCに変換し、データベースに登録を行い、 windowsのアプリ(visualBasic作成)でodbc接続にて データを表示させると"京"の漢字が文字化けをおこしてしまいました。 ("東京支店" -> "東=支店"と表示されてしまいます。) サーバのデータベースはEUC-JPで構築しております。 EUCの"京"の文字はS-JISの文字コード表にないためなのでしょうが、 ODBCで変換をしてくれていないのでしょうか・・ 勉強不足ですみませんが皆様のお知恵をお借りできればと思います。 よろしくお願いいたしいます。
- ベストアンサー
- PostgreSQL
- HTMLで文字コードを区別したいのですが
HTML内にPHPで作られた買い物カートへジャンプするフォームを挿入するのですが、商品のオプション選択のとろこで使う日本語の文字コードはEUC-JPにする必要があるみたいです。そのほかのところはutf-8で記述しているのですが、 BODY内の一部(フォーム)だけEUC-JPに切り替えることは可能なのでしょうか?
- ベストアンサー
- HTML
- HTMLの文字コードに関する素朴な疑問です!?
HTMLの文字コードに関する素朴な疑問です!? HTMLファイルの書き方は、時とともに変遷してきました。 ■CSSの場合は、 <style type="text/css> ~</style> ↓ <style> ~</style> ■JavaScriptの場合は、 <script type="text/javascript> ~</script> ↓ <script> ~</script> ■文字コードの場合は、 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> ↓ <meta charset="UTF-8"> 調べてみたところ、 ・日本では、「 UTF-8 」、「 Shift_JIS 」、「 EUC-JP 」の 3つがよく使われている文字コードである。 ・Shift-JISでの日本語1文字あたりのデータ量は2バイトだが、 UTF-8は1文字あたり3バイト必要である。 UTF-8よりもShift-JISの方が消費データが少なくて済む。 それにつけても、文字コードは何故 ・一本化しないのだろうか? ・一本化したら困ることでもあるのだろうか?
- ベストアンサー
- HTML
- MySQL4.0 UTF-8 での文字化け
こんにちは MySQL4.0 & PHP4.3 でHTMLは文字コードUTF-8で記述しています。 MySQL4.0の文字コード設定はレンタルサーバーのため不明ですが、 phpMyAdminで、utf-8にてデータを入力しました。 select文でMySQLのデータを拾ってくると文字化けはおきないのですが PHP経由でPOSTされた値を使ってinsertやupdateをかけると文字化けしてしまいます。phpMyAdmin上でも文字化けしていますが、phpMyAdminをEUC-JPにすると、入力した文字が文字化けせずに表示されます。 (が、すでに入っているデータは文字化けします、、、、) 入力画面は metaでUTF-8宣言をしており、ブラウザ(IE)上でエンコードを確認するとUnicode(UTF-8)になっています。4.1みたいにset names を指定するとうまくいくかな?と思ったのですが、やっぱり4.0なので結果は変わらず、でした。PHPのスクリプトそのものは、UTF-8で記述しているのですが、、、、 どういった項目をみなおせばいいのでしょうか?
- ベストアンサー
- MySQL
- 文字コード? 推奨UTF-8?
以前、EUC-JPの文字コードを使っていましたが、ホームページの文字コードをUTF-8に変えた後、 クッキーやフォーム(FORMタグ)が正しく動作しなくなりました。 Perl(Perlも5.6から5.8に変更)でCGI組んでいるのですが、何が原因なのでしょうか?
- ベストアンサー
- Perl
- euc-jpからutf-8の文字コード変換について
現在、何らかのhtmlを取得する際にはurf-8で統一しようと思っているのですが、 たとえば <?php $f=file_get_contents("http://blog.livedoor.jp/dqnplus/")//文字コードEUC-JP; $f = mb_convert_encoding($f,"utf-8","eucjp-win,utf-8,sjis-win,EUC-JP"); echo $f; ?> では、EUC-JPからの変換がうまくいきません。 ……というより、EUC-JPのエンコーディングのみ失敗してしまいます。 (文字化けしたもののみ抽出すると、すべてEUC-JPでした) どのようなコードを書けば、正常にエンコードできるでしょうか。 どなたかご教示のほど、どうかよろしくお願いいたします。
- 締切済み
- PHP
- ホームページのソースが文字化けします。
ホームページのソースが文字化けします。ほとんどのページでは文字化けしていません。文字コードがeuc-jpになっているためだそうです。 どうすればよろしいでしょうか。
- ベストアンサー
- ホームページ作成ソフト