- ベストアンサー
文字コードについて(どのファイルをどの文字コードにしてWeb開発を進めていくべきか)
【疑問の背景】 文字コードについて(どのファイルをどの文字コードにしてWeb開発を進めていくべきか) 国際標準で使われているUTF-8で統一しておけば問題はないだろうと思って開発を進めていると・・・ UTF-8は「日本語が2~4バイト」で扱われるという、バイトの扱いが厄介であるため、 できればJavaでのUTF-8で開発は避けたい、だから「Shift-JIS」にしておきたいという話があがり、 各々のファイルにどの文字コードを設定すれば良いのかがわからなくなっている状態です。 いくつかの疑問がでていまして 判る範囲で構いませんので文字コード設定の判断についてのアドバイスいただけませんでしょうか? 【現在の開発文字コード】 HTMLファイル: UTF-8 JSPファイル: UTF-8 Javaファイル(servlet): UTF-8 Javaファイル(Bean): UTF-8 Javaファイル(JSPから出来たサーブレット): UTF-8 データベース: UTF-8 【設定したい今後の予定文字コード】 HTMLファイル: UTF-8 JSPファイル: UTF-8 Javaファイル(servlet): Shift-JIS Javaファイル(Bean): Shift-JIS Javaファイル(JSPから出来たサーブレット): Shift-JIS データベース: UTF-8 【疑問1】 javaファイル(servlet,Bean)をどのコードにすべきかについて 全てS-JISにした方がいいのか、UTF-8にした方がいいのかどうあるべきなのでしょうか? (UTF-8 で 「日本語が2~4バイト」として扱われると、どういった弊害が発生するのでしょうか?) 【疑問2】 javaファイルをS-JISに変える方法について 今はサクラエディターというツールで 名前を付けて保存 → 文字コードセット「Shift-JIS」 → 保存 → ファイル名の文字コードセットの変更完了 今はエクスプローラーから直接フォルダの中にあるファイルを触っている状況なのですが、 eclipseから「ファイルの文字コードセットを変更する方法」はありますでしょうか? 【疑問3】 「Shift-JIS」に設定して開発していく必要性について 既存で「utf-8」で設定されているjavaファイルを、「Shift-JIS」に設定して開発していく必要性はあるのでしょうか? (all in one eclipse 3.4 を入れたとき、デフォルトで「utf-8」でjavaファイルが作られるつくりになっているみたいなのですが・・・) 【疑問4】 javaファイル作成時、「Shift-JIS」の形式でファイルを生成する方法について 現在、javaファイルを作成する場合「utf-8」のコードでjavaファイルが生成されるようになっています。 【自作で作成したjavaファイルの場合】 「サクラエディターを使用して、文字コードセットをShift-JISに変更すれば、ずっとShift-JISのファイルの状態」にすることができました。 しかしここで問題が出たのですが 【JSPファイルから自動生成されたjavaファイル(servlet)の場合】 「サクラエディターを使って、Shift-JISに変更した後に、JSPファイルを編集すると、また“utf-8に戻ってしまう” 状態」です。 現状としては「JavaファイルはShift-JISに統一して欲しい」という要望なので、 JSPから自動生成されたjavaファイルが "utf-8" になってしまいます。 JSPから自動生成されたjavaファイルを "常にShift-JISに設定する" 方法はありますでしょうか? 【環境】 OS ・WindowsXP Pro java開発環境 ・all in one eclipse(3.4) ・TomCat(6.0) ・Java JRE(1.6) ・MySQL(5.0)
- みんなの回答 (3)
- 専門家の回答
お礼
すみません、お礼が遅れて申し訳ありません。 どうも、ありがとうございます。 ●文字集合とエンコード方式について >えっと、まず、文字集合とエンコード方式 (もしくはエンコーディング方式) の違いは OK ですか? すみません。 ここのところがよくかわかってなかったです(--; UTF-8、UTF-16ってあくまで「エンコード方式」であって 文字集合体ではないのですね。 >Shift_JIS も同様にエンコード方式で、これは JIS X 0208 という文字集合に対応するエンコード方式のひとつです。 こちらも同様で Shift-JISというものがそもそも「Shift-JIS」という、日本語を取りか使った文字集合体なのだと想っていました。 ●あれから「UTF-8にするのか、Shift-JISにするのか? 何故バイトが扱い辛いのか?」ということについて再度伺った点について その方がShift-JISにしておいて欲しいというのは、 ひとまずは、今編集しているJavaファイルをSHIFT-JISにしておいて、後でほかのファイルもShift-JISで統一して欲しいということだったようです。 他のものは現在、UTF-8であって、 それを変えなくていいというのは「今変えなくていい」ということであり「後々にはShift-JISで統一化をして欲しい」ということでした。 現在の開発としては 「UTF-8」で開発するべきなのか「Shift-JIS」で開発すべきか という点が確定していないため Shift-JIS限定でとは言わないが、 とにかく文字コードを統一して欲しいということだったようです ●サロゲートペアについて http://www.atmarkit.co.jp/fjava/rensai4/programer06/programer06_1.html 表1 Java言語における文字と文字列 より 「U+0000~U+FFFFの文字セットは、「基本多言語面(BMP)」と呼ばれ、この範囲の文字はchar1つが1文字を表す」 とのことでした これがいわゆる、視認として 「文字が1つに対して1つの長さが返る(lengthが「1」で返る)」ものであり 「U+FFFFよりも大きいコードポイントを持つ文字は、「補助文字」と呼ばれ、この範囲の文字はchar2つで1文字を表す」とのことでした。 これが「文字が1つに対して1つの長さが返る(lengthが「1」で返る)」サロゲートペアと呼ばれるもの と書かれてありました。 Unicodeってこんな風になっているのですね^^;