• ベストアンサー

文字コードについて理解できません・・

データベース内はShift_jisでJavaはUnicode・・でWeb系アプリ 開発をするとします。 その際発生する文字変換における文字化けや内部変換におけるしくみが 色々参考書を読みましたが理解できません。。 最近ではアレルギーになりつつあります。 参考になるお話やサイトなどあれば是非ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rentahero
  • ベストアンサー率53% (182/342)
回答No.3

> 参考になるお話やサイトなどあれば是非ご教授お願いします。 JIS区点コードとShift_JIS/EUC-JPの関係 http://www.hosibune.net/~mak/technical/kanji.shtml 文字コード表 http://ash.jp/code/index.htm 歴史的仮名遣いとフォント http://www.horagai.com/www/moji/int/itikawa.htm 文字コード全般 http://www.kanzaki.com/docs/jcode.html 文字コードをめぐって http://hp.vector.co.jp/authors/VA011700/moji/code00.htm 多言語入力検索ツール http://code.cside.com/3rdpage/jp/ いっぱいあります。これ以外にもたくさんあります。 簡単に説明すると、Unicodeはいろいろな事情により、漢字は簡体字繁体字日本語韓国語ですべて統一して文字コードが割り振られています。そのため、Unicode漢字はJIS区点コードとは並びがまったく違います。したがって、必ず変換表が必要になります。また困ったことに変換表が処理系により非互換な部分が一部あったりします。 さて > そもそもの基本ですが > JIS←→UTF > の相互変換ってうまく行くのでしょうか?。 > 例えばJISにあってUTFにない‥とかなんですが… JIS 第一水準の漢字と第二水準の漢字はすべてUnicodeに採用されていますのでこの範囲では相互変換に問題はありません。 JIS 第一水準の漢字以外では、また、ギリシャ文字やキリル文字などの全角にしかない記号類はUnicodeの該当文字にすればよいでしょう。また、全角ひらがなと全角カタカナ、および句読点等の一部記号はもちろんUnicodeにそのまま採用されていますのでほぼ問題ありません。 問題になるのは、全角記号($とか%とか)などの、本来半角であらわすべき記号群がJIS第一水準の1区に大量に採用されていることと、半角カナという本来全角であらわすべき文字があることです。JISに全角でしか存在しないギリシャ文字などはそのまま全角に戻す以外にあらわす方法がありませんから問題にはなりませんが、半角と全角に両方ある記号($,$とか%,%とか)はどうするのか、ということです。 それ以外では、これはある程度瑣末な問題ですが、ひらがな、カタカナの濁点・半濁点の取り扱いはどうするのか(組み合わせ文字「カ゛・MacOS風・半角カナ方式」にするのか完成形「ガ・Windows風・全角カナ方式」にするのか)ということも問題になることがあります。 さて、データベースとJavaのサーブレット、両方があなたの管理下のサーバー内のことですから、 ・すべてJIS区点コード範囲内で取り扱う ・上記の半角・全角等の問題は特定の変換表を使うなどとしておけば問題は発生しないと思います。 重ねて言いますが、Unicode⇔JIS区点コード間は必ずなんらかの変換表が必要になります。 ここで実際にどういう変換表を使うかが問題になるわけなのですが、まあたとえば上記コード表(http://ash.jp/code/index.htm 元はUnicodeコンソーシアムの変換表)を使うというのもいけますし、Javaの変換表をそのまま流用する(Shift_JISでJavaに入力する)方法もあります。 とにかく独自で変換表を用意するにせよ、Javaの変換表を利用するにせよ、内部で使用する分の変換表は絶対にひとつに統一するべきです。

その他の回答 (2)

  • process9
  • ベストアンサー率29% (81/271)
回答No.2

process9です。 変換を学ぶ前に文字コードとはなんぞや? という部分を完全に理解をすると、文字化けの理由や変換方法は自然と理解できると思います。 わかりやすく簡単に説明しているサイト http://www.shoshinsha.com/pukiwiki/pukiwiki.php?%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9%A4%C8%A4%CF ちょっと専門的に・・・ http://www.sodan.ecc.u-tokyo.ac.jp/2001/article/tips/tips15.shtml 今制定されている文字コードがどうやって決められたか、変換時の注意点などの詳細情報 http://euc.jp/i18n/charcode.ja.html あたりでわかると思います。 要は、数値と表示文字画像(一般にこれをフォントという)の 対応表の数値(コード)のことです。 この対応表(文字コード表)が曲者で、 世界で1つしかなければ問題ないのですが、そうもいかないので いろんな種類(JIS,EUC,UTFなど)の対応表が制定されています。 なので、書き手と読み手の使う対応表が一致しない場合 文字化け(表示文字画像の誤変換)だと認識されるのです。 なので、本来文字化けといわれる現象は、文字(表示文字画像)が化けているのではなくて 表示文字誤変換とでも言った方が本当は正しいのですが。。。

noname#46520
質問者

お礼

皆様、詳細なご説明ありがとうございます。 ご紹介の資料読んでちょっと勉強します。。 そもそもの基本ですが JIS←→UTF の相互変換ってうまく行くのでしょうか?。 例えばJISにあってUTFにない・・とかなんですが。。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

コード変換には色々有りますが歴史の古い1番泥臭い方法を。 8ビットコードと8ビットコードを相互変換するとします。 xコードでAがX38でyコードでX55とします。 このときy表のX38の欄にX55を入れておきます。 逆にx表のX55の欄にX38を入れておきます。 これでどちら側からでも一発でコード変換が出来ます。

関連するQ&A