- ベストアンサー
Web標準のエンコードについて(Html,Java)
Webアプリケーションのエンコードについて教えてください。 エンコードには「Shift-JIS」と「UTF-8」などがありますが、 Webアプリケーションの標準として主に使用されるコードは何でしょうか? googleなら「UTF-8」、教えてgooなら「EUC」という風に指定が分かれているのですが、開発者側としては何を目的として意識してエンコードの指定を行うべきなのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
SJIS系のコードは、Windows、Mac やかつて一部の UNIX で使われていたコードです。 そのまま Web にもと考えるメーカーやユーザーもいますね。 欠点は、国際文字(日本語・英語以外用の文字)がほとんど無いこと、文字列処理が理不尽に面倒な事、方言(機種依存文字)が多い事です。 EUC-JP は、かつて多くのUNIX系OSで使われていたコードです。 欠点は、国際文字がほとんど無いことです。 文字列処理の面倒さはSJISよりはるかにマシです。 ISO-2022-JP(通称JIS)は、E-mail での公式コードです。 欠点は、国際文字がほとんど無いことです。 文字列処理は、他のコードに変換してやりましょう。 上記 3種は、ともに JIS規格の文字集合のためのエンコードで、兄弟です。 UTF-8 が登場したからには、早期の絶滅が望まれています。(ちょっと言い過ぎ) UTF-8 は、Unicode文字集合のためのエンコードです。 どの国でも使える事を前提に作られた国際規格なので、収録文字の多さは JIS規格と比較になりません。 UTF-8以外のコードを使わない世界は、ユーザーとメーカーの決断次第で今すぐ可能です。 そうすれば、「どのコードにしよう?」という悩みも、文字コード変換の手間も、文字化けのトラブルも決別する事ができます。 Web でも、UTF-8 が増えてきています。 UTF-8 にしましょうよ。
その他の回答 (4)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
クライアントソフトの中枢になるJavaScriptの内部コードがUTF-8ですので、それに合わせてUTF-8が使いやすいと思いますし、私もそれを推奨します。 ServletはUTF-8が良いと思いますが、 アプレットの場合は、クライアントのシステム文字コードの方が良いんじゃないでしょうか? (UTF-8で作成して文字化けした事があるので。作り方が悪いだけならそれで良いんですけどね。) モバイル環境では、日本語1文字はShift_JISが2バイト、UTF-8が3バイトですから、バイト数・パケ代を考慮すればShift_JISの方が良いと思います。 (バイト数だけで言えばEUC-JPでもいいですが、対応機種の多さを考えればShift_JISの方が良いと思います) まあ、パケ代の問題は、必ずといって良いほど定額サービスを利用されていると思うので、関係ないかもしれませんが、 携帯電話用のページなら、HTMLファイルサイズ5kb~10kb程度の制限があるので、表示できる文字数が大きく変わると思います。
お礼
どうも、ありがとうございます。 パッケット代金は気にしたことがありませんでした。 やっぱりUTF-8がいいみたいですね。
- x_jouet_x
- ベストアンサー率68% (162/236)
> 「文字コードが統一化されていないシステム」って結構ありますか? LAMP(Linux + Apache + MySQL + PHP,Perl...)のような環境であれば統一化されていると思いますが、大きなシステムであれば統一化されていないものも結構あると思いますよ(最近はどうか分かりませんが・・・) > 統一化されていない原因としては、「設計者の文字コードの認識不足による、設計の失敗?」ということになるのでしょうか? これはほとんどの場合、答えは No になると思います。 大規模システムになると政治的背景(と言ったら大袈裟ですが…)があるので、例えば「DBは自社製品のこれにしてくれ」とか「サーバはここのやつを使ってくれ」とかいう要求が出てくるものです。 そうこうしてシステムを組み上げてみると、文字コードの統一化されていないシステムが出来上がるという訳です。 あくまでこれは私の体験談ですけどね。
お礼
場合によっては統一化されていないものあったりするんですね。 言われてみればほんとうですね、確かに・・・ 例え設計者が統一化を意図していても、「DBは自社製品のこれにしてくれ」とか「サーバはここのやつを使ってくれ」という要求があれば、そうするしかないでしょうね。 どうも、ありがとうございます。
- x_jouet_x
- ベストアンサー率68% (162/236)
WebアプリケーションでJavaと書かれているので、恐らくSevletやJSPを使用した場合の話だと思います。 そうだとしたら、私もUTF-8の使用をオススメします。 Javaは内部コードではUnicodeで処理が行われますから、文字コード変換や文字化けの問題に悩まされることもありませんしね。 > 開発者側としては何を目的として意識してエンコードの指定を行うべきなのでしょうか? これは実行環境を意識することが多いと思います。 例えば、Webアプリが動作するサーバの文字コードがEUCだったり、DBの文字コードがEUCだったり・・・。 この場合、WebアプリだけUTF-8で動作させても、DBとのI/Oで文字コード変換を行う必要があり手間になります。 一番の理想は周りの環境が全て同じ文字コードだったら、それに合わせてWebアプリも同じ文字コードに合わせることなんですけどね・・・。
お礼
ありがとうございます。 すみません、おっしゃって下さっている通り、Servlet,JSPを使用した場合においてです。 >一番の理想は周りの環境が全て同じ文字コードだったら、それに合わせてWebアプリも同じ文字コードに合わせることなんですけどね・・・。 そうなのですね。 ちょっと興味本位なのですけど、 「文字コードは統一化しておいた方がいい」ということがわかったのですが、実情、「文字コードが統一化されていないシステム」って結構ありますか? もし仮に 「文字コードの統一化がされていないシステム」 あれば、統一化されていない原因としては、 「設計者の文字コードの認識不足による、設計の失敗?」ということになるのでしょうか?
ファイル内の使用された文字に応じて文字コードを指定。
お礼
ありがとうございます。 実は、そこからの切り分けてで困っているのです(--;
お礼
ありがとうございます。 ご回答いただきました内容、とてもためになります。 Webでも、UTF-8が増えているのですね。 「どの国でも使える事を前提に作られた国際規格」ということなら、使わない手はない訳ですね。