• ベストアンサー

文字について UNICODE

全くの初心者で恐縮です。 WEB環境で、画面入力した漢字をOracleDBに更新する。または、その逆を実施しようとしています。 が、問題がありまして、 端末で使用している文字が独自文字(2バイト系UNICODE準拠)なのです。 端末はWINXPです。OS内ではS-JISですよね。 そこで、画面の入出力やDB更新時に文字化けや 強制変換が発生するか不安なのですが。 JAVAは、独自文字でも大丈夫なのでしょうか。 とてもアバウトな質問ですみません。 もしかしたらJAVAだけの話では無いのでしょうか。 どなたか、そこら辺も含めて教えていただけますでしょうか。 宜しくお願いします。

  • Java
  • 回答数4
  • ありがとう数7

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

  • ベストアンサー
  • yutopapa
  • ベストアンサー率47% (139/295)
回答No.1

基本的には「問題あり」と言えると思います。 独自文字については情報を持ち併せておりませんのでちょっとおいて起きますが、WindowsのS-JIS(MS932マッピング)とJava内部で扱うUNICODEの間でも、既に文字変換が正しく行われないケースがあります。 (「~」とか「ー」とか、うまく変換出来ないのです。) また、OracleもS-JISであれば、JavaからOracleにセットする時点でまたマッピングの問題があります。 その辺の問題をクリアするためにWebアプリケーションサーバーが独自の方法で文字マッピングを正しく行うようサポートします。(例えばWeblogicとかは問題なくマッピングがおこなわれます。) どういうインフラでJavaのWebアプリケーション構築を考えられているのかわかりませんが、Webアプリケーションサーバーの機能をお調べになった方が良いでしょう。 独自文字については、実際に検証プログラムを用意してやってみるのが一番確実ですね。 私もJava初期の頃、苦労して検証した覚えがあります。 今なら一週間くらいあれば出来そうですよね。

ryokutya3gou
質問者

お礼

有り難うございます。 当方、JAVA全くの初心者なのですが、とにかくWEB系で、 という提案なので、泣きそうです。 甘えてすみませんが、できれば全くの初心者でも よく分かるサイトがあれば教えていただけないでしょうか。

その他の回答 (3)

  • yutopapa
  • ベストアンサー率47% (139/295)
回答No.4

#1です。 JavaもWebも初めての方なんですよね? ひとまず一通り勉強出来そうなサイトを一つお知らせします。 頑張って下さい。

参考URL:
http://www.hellohiro.com/
ryokutya3gou
質問者

お礼

はい、そうなんですよ。 まずはもっと学習いたします。 有り難うございました。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

まず誤解されていますが WINXPの内部はUNICODEです。 出力の際,慣例的にS-JISがよく使われているだけです。 Oracleの場合、データベース作成時にキャラセットで文字コードを指定しています。 少なくともOracle9iではキャラクタセットの変更は後からできないので キャラクタセット変更には再構築する必要があります。 javaの標準の文字コードはISO-2022(だったかな)です。 javaの方でDBにあわせた文字コードに変換すれば問題ないかと思います。 つまり最初にOracleデータベースがどのキャラクタセットを使っているかを 調べる必要があります。

ryokutya3gou
質問者

お礼

ORACLEは実はS-JISで、クライアントもS-JISでした。 システムでは、一部、S-JIS、一部UNICODEを 使用したい、という我が儘がありまして。 いずれにしろ、どうも簡単にいかなさそうですね。 もうちょっと勉強いたします。 有り難うございました。

  • jun-1
  • ベストアンサー率29% (18/61)
回答No.2

Oracle(JDBCドライバ)が8.1.7だと、下記のページのような どうにもならない問題(文字化け)が発生するようです。

参考URL:
http://otndnld.oracle.co.jp/tech/java/htdocs/javanls/javanls817.html
ryokutya3gou
質問者

お礼

色々と問題ありそうな事がわかりました。 有り難うございます。 それにしても、困った困ったです。

関連するQ&A

  • VB.NETで文字体系UNICODEをOracleDBに更新するには。

    画面のテキストボックスに入力した文字(UNICODE体系でS-JIS範囲外、フォントを指定しています。)を入力し、 OracleDB(9i)にOO4Oを使用して更新しようとしています。(以下のソースのとおりです。) oraDs.ComDbObject.Parameters.Add("S_1", "", 1) '入力用バンインド変数で宣言 MainPara1 = oraDs.ComDbObject.Parameters("S_1") MainPara1.serverType = 1 'varchar2型で宣言 MainPara1.Value = Me.txtENAME.Text.Trim oraDs.Update() 更新はできるのですが、文字化けしてしまうのです。 テキストボックスへの入力や表示は問題無いので、Oracleへは.Textで値を渡しているのですが、これをUnicode化しないと駄目なんでしょうか? または、oo4oのパラメータが、varchar2でNvarchar2でないせいもあるのかと思うのですが、よくわかりません。 どうか、宜しくお願いします。

  • リダイレクトする時の文字コードをUnicodeに

    現在、VisualStudioで、システムコールの標準出力結果をリダイレクトしてファイルに保存する プログラムを書いています。 _tsystem(command); のような感じで、commandには "hogehoge > hoge.txt"のように入ります。 ※command はTCHAR この出力結果が、Shift-Jisになっているようで、Shift-Jisだと日本語が文字化けせずに表示されるのですが、Unicode UTF-16にすると文字化けしてしまいます。 Unicode UTF-16とかUnicode UTF-8など文字コードを指定してリダイレクトできないのでしょうか。 ちょっと調べてみましたがうまく見つかりませんでした。

  • Unicode上しか存在しない文字一覧を調べたい

    Unicode上しか存在しない文字一覧を調べたい というのも、画面上で「立方メートル(m^3)」を入力して保存後、画面を開きなおすと「㎥」という文字コードに文字化けを起こしてしまう事象が発生しました。 過去の質問などを調べたところ、以下のような動きになっていると認識しています。 (違ってたら補足お願いします;) 1.入力時:  クライアントはWindows+IEを使用しているため、入力時にはunicodeに存在する「m^3」が表示される 2.データ登録時(クライアント→サーバ):  クライアントからサーバ(Windows)上にデータを送信する際に、文字エンコードをwindows-31Jで指定しているため、文字コード「㎥」に化ける  (※ここでwindows-31Jに「立方メートル」が存在しないため文字化けを起こして登録される?) 3.データ表示時(サーバ→クライアント):  サーバからデータを送信する際にはshift-JISを指定しているため、文字コード「㎥」として送信される ※参考:http://okwave.jp/qa/q1676143.html そこで知りたいのが、このようにデータを登録すると文字化けを起こしてしまう文字の一覧を知りたいと思っております。 つまりUnicodeにのみ存在する文字の一覧を調べたいと思っているのですが…。 自分で調べた限りでは、↓のように、unicode文字の一覧は見つかったのですが、「unicodeのみに存在する文字」(=文字化けして表示されてしまう)文字の一覧というものが調べられず。。。 http://nurucom-archives.hp.infoseek.co.jp/digital/unicode-table.html http://d-toybox.com/studio/lib/romanNumerals.html#sample もし紹介しているサイトをご存知の方いましたら教えていただけると幸いです。 もしくは自分で調べるための方法などをご教示していただけると助かります。 (さすがに画面に65535文字打ち込んで調べるのは骨が折れます。。)

  • Unicode時の文字化け(過去にもありましたが・・・)

    過去の投稿も確認したんですが、理解できなかったので申し訳ありませんが、よろしくお願いします。 Perl5.8.2を使用しています。 Perlでメールを読んでDBに格納→DBから一覧画面に表示という処理を Unicodeで作成しています。 Unicodeの変換はUnicode::Japaneseを使用していますが、 Outlookからテキストのメールを送った場合には、なんの問題も無く、 ブラウザで表示できるのですが、UTF-8で送った場合に半角との混在 文字(例えば『試験html』など)を送ると文字化けを起こします。 過去の投稿からUTF8フラグ(?)の影響かと思い、UTF8フラグをチェック してみたのですが双方とも付いていないようでした。 UTF-8以外のHTMLメールの場合には問題なく表示できます。 どのような原因が考えられるのでしょうか? よろしくお願いいたします。

  • Flash8のユニコードについて。(mySQLとの連携)

    Flash8とPHPとmysqlの連携でアプリケーションを作っています。 mysqlで作ったデータベースからphpで日本語のテキストを読み込み、ActionScriptで表示させたいのですが、ユニコード(?)が違うらしく文字化けが起こってしまいます。(ムービープレビューの際) mysqlのユニコードShift-JISにしています。 Flashのユニコードを変更することはできるのでしょうか? また、文字化け解消のアドバイスなどあればお願いします。

    • ベストアンサー
    • Flash
  • Unicode-Japaneseでの絵文字変換

    Unicode-Japaneseを使って別キャリアの絵文字を相互変換しようと 思っています。 ソースはShift_JISで作成、画面表示もShift_JISです。 $in{text}はformからの受取です。Softbankの3G端末でテストしています。 入力を受け取り、一度、utf8に変換後、また元に戻しているつもりですが、 $str2を画面に表示しても、絵文字が化けてしまっています。 (普通のテキストなら化けません) 何か考え方が間違っているでしょうか。 以下、変換して戻している部分です。 うまくいった場合には、$str1 をデータとして保存しようと思っています。 $s = Unicode::Japanese->new($in{text},"sjis-jsky"); $str1 = $s->conv("utf8"); $s = Unicode::Japanese->new($str1,"utf8"); $str2 = $s->conv("sjis-jsky"); よろしくお願いいたします。

  • 内部文字コードとは?

    javaは内部では文字をユニコードとして扱うとは、 どういう事でしょうか? 例えば、javaのブログラムをwindows上で作ったとして、 「こんにちわ」と出力させるプログラムを作ったとすると、 public class Hello{ public static void main(String[] args) { System.out.println("こんにちわ"); } } となりますよね、この時、このjavaのソースファイルを、 ユニコードとして保存して、コンパイル、実行しないと、 正常に動かないという事でしょうか? つまり、ソースをシフトJISで保存してJAVAでコンパイルをしようとすると、ソースコード中の文字をユニコードとして扱うため、 文字化けして、コンパイラは一体何の事か分からずエラーみたいな感じになるのでしょうか?(それとも自動で文字コードをユニコードに変換してくれるのかな?) 要するに、「内部文字コード」という言葉が何を指しているのかが分からないですが、よろしくお願いします。

  • インターネット Unicode(Utf-8) 表示されない。

    こんにちは、 環境:Windows2000PRO、IE6.0 インターネットをブラウズすると、エンコードが Unicode(Utf-8) になっていて文字化けしたり、表示されなくなります。 画面で右クリックしてエンコードを日本語(SHIFT-JIS)にすると直ります。この状態をどのように直せばいいのでしょうか? 何かお分かりの方がいましたら教えてください。 よろしくお願いします。

  • javaでのshift_jis対応以外のunicodeの入出力

    windows2000sp4 j2sdk1.4.2_05の環境です .netでは、直接unicodeでの入出力が行われるとか聞いているのですが、javaのFileInputReader/Writerで、encodingに、UTF-16 UTF-16LE UTF-8 等を指定して、入出力を行った時、どうも、s-jis対応外の文字は、"?"に変換されてしまうようで、FileInput/OutputStream を用い、バイナリで処理してみようとおもったのですが、byte型とString型(または、BufferString型)とのbinaryなデータのcopyがよく分かりません。何かご存知の方 お教え頂けないでしょうか

    • ベストアンサー
    • Java
  • UNIXの文字について

    UNIX⇔WINDOWSでのデータのやりとりを実施したいのですが、 1、UINX(UNICODE)とWIN系(JIS)の文字コードの対応はどうすればよいのでしょうか? 2、UINX(UNICODE)とWIN系(JIS)の文字の変換はどうすればよいのでしょうか? 3、外字の対応はどうせうればよいのでしょうか?