竹形誠司 ブログ
OpenSolaris    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
文字コードの設定
by 竹形 誠司[takegata]
Webアプリケーションでは、文字コードのミスマッチによって日本語の文字が正しく表示されない「文字化け」という現象がよく起こります。以前は、UNIX系のOSではEUC-JP、MS-DOS系のOSではShift_JISが多く使われていましたが、最近は複数の言語を同時に扱うことができるUnicodeが普及してきています。今ではほとんどのブラウザがUnicodeに対応しているので(*1)、Webアプリケーションを開発する場合は、文字コードをUnicodeに統一しておくとよいでしょう。

Unicodeにはいくつかの種類がありますが、多くの場合はUTF-8が使われます。SolarisもかつてはEUC-JPが標準でしたが、最近のOpenSolarisなどではUTF-8も問題なく使えるようになっています。言語や通貨、年号など国ごとに異なる情報を「ロケール」と呼びますが、OpenSolarisでは、日本語に関して次の4つのロケールが用意されています。
ロケール文字コード
jaEUC-JP
ja_JP.eucJPEUC-JP
ja_JP.PCKShift_JIS
ja_JP.UTF-8UTF-8


ロケールの設定は、環境変数LANGに保存されています。現在のロケールを確認するには、次のように操作します(以下の例はシェルがbashの場合)。
$ echo $LANG
ja_JP.UTF-8
$
ロケールを設定するには、次のように操作します。
$ export LANG=ja_JP.UTF-8
これを .profileに書くことによって、ログイン時のロケールを設定することができます。また、/etc/default/init に次のような行を追加すれば、OSレベルでデフォルトのロケールを指定することができます。
LANG=ja_JP.UTF-8
SSHでサーバに接続する場合は、端末側も文字コードを合わせておく必要があります。端末がWindowsの場合は、PuttyかTeraTermProを使うことが多いと思いますが、PuTTYの場合は「ウィンドウ」の下の「変換」のところで文字コードを設定することができます。
Puttyの文字コード設定
Puttyの文字コード設定

TeraTermProは「設定」メニューの「端末」を選ぶと、「端末の設定」ダイアログが表示され「漢字-受信」と「漢字-送信」で文字コードを設定することができます。
TeraTermProの文字コード設定
TeraTermProの文字コード設定

ついでにMySQLのデフォルトの文字コードもUTF-8にしておくとよいでしょう。/etc/mysql/my.cnf ファイルを開いて[mysql]セクションと[mysqld]セクションに、次のような行を追加します。
default-character-set=utf8
*1) i-modeなどの携帯端末はUnicodeに対応していないものがまだ多いようです。

投稿:竹形 誠司[takegata]/2008年 04月 30日 06時 47分 /更新:2008年 04月 30日 08時 21分