• 締切済み
  • すぐに回答を!

Javaでの機種依存文字とWAVE DASH他の文字化け回避

Javaを使用して開発を行っていますが、 Oracle 9i DB(文字コードEUC) <=> JDBC <=> JSP の流れの中で文字化けが発生しています。 JSPでの charset=Windows-31J 、ファイルを読み込むときの エンコーディングもWindows-31Jにしています。 具体的に文字化けするのは、 (1)(1)(○の中に数字) I(ローマ数字)のような機種依存文字 (2)~(WAVE DASH) ∥(DOUBLE VERTICAL LINE)など です。 上記環境で文字化けを完全回避するに当たってですが、 (a)(1)に関しては、Oracleの文字コードをEUCではなくUTF-8にしないと だめでしょうか?EUCでは回避は無理でしょうか? JA16SJISTILDEでも大丈夫でしょうか? (b)どうすれば防げるでしょうか?   Oracleの文字コードをJA16SJISTILDEにすれば大丈夫でしょうか? (c)他に文字化けに関して良い回避策・注意点があれば教えてください。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数1997
  • ありがとう数1

みんなの回答

  • 回答No.2
  • bgbg
  • ベストアンサー率53% (94/175)

(1)ですが、Java側で正常にUnicode<=>EUC変換できる文字であれば大丈夫でしょう。 どの文字ができてどの文字ができないかは実際に実験して確かめてみた方が良いと思います。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 機種依存文字

    いつもお世話になっております。 機種依存文字について質問させていただきます。 CSVファイルをアップロードして、文字コードがEUCのデータベースに 格納したいと思っております。(PHPの文字コードもEUCになっております。) 「(はしごたか)」「(たつさき)」などの機種依存文字が 文字化けをしてしまいます。 $name = mb_convert_kana(mb_convert_encoding($data[1], "EUC-JP", "Shift-JIS"), "KV") $name = mb_convert_kana(mb_convert_encoding($data[1], "eucJP-win", "Shift-JIS"), "KV") としても文字化けをしてしまいます。 また、以下の設定をしても文字化けは解消されません。 ini_set('default_charset', 'eucJP-win'); ini_set('mbstring.http_output', 'eucJP-win'); ini_set('mbstring.internal_encoding', 'eucJP-win'); 皆様、ご提示お願いいたします。 よろしくお願いいたします。 <環境> OS:Red Hat Linux PHP:Version 4.3.1 DB:MySQL 3.23.56

    • ベストアンサー
    • PHP
  • 機種依存文字の文字コード変換

    現在、Shift-JISでCGIを作成しています。言語はPerlです。HTMLファイルから送信された文字をDBに登録するのですが、CGIをShift-JISで作成しているのに、DBがEUCとなっているため、jcode.plを利用して文字コードを変換しています。 しかし、文字が機種依存文字である場合、jcode.plでは文字コード変換ができないようで文字化けを起こした文字をDBに登録しようとしてエラーを起こしてしまいます。 何とか機種依存文字をコード変換したいのですが、可能でしょうか?

    • ベストアンサー
    • Perl
  • PHPメールフォームから機種依存文字を送信すると、文字化けしてしまう

    PHPのメールフォームを作成しましたが、下記2点で悩んでいます。 初心者で申し訳ありませんが、ご教授願いします。 PHP(PHP作成文字コードは「UTF-8」)でメールフォームを作成しました。 --------------------------------------- mb_language("Ja"); mb_internal_encoding("UTF-8"); $header = "From:" .mb_encode_mimeheader($guestName) ."<" .$guestEmail .">"; $mailto = "test@xxx.com"; $subject = "ご連絡ありがとうございます。"; $boRtn=mb_send_mail($mailto,$subject,$content.$content_guest,$header); --------------------------------------- (1)送信した結果、機種依存文字が化けてしまいました。 機種依存以外の文字は文字化けしません。 送信した機種依存文字は「ローマ数字やまるいちなど」 (2)また受信したメールのヘッダー部分を表示したら、 件名の日本語文字列が3行くらいに改行されてしまいます。 上記の現象(特に機種依存文字の送信)について、 記述ミスや足りない点など教えて下さい。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 回答No.1
  • bgbg
  • ベストアンサー率53% (94/175)

これは、Java内部のUnicodeマッピングとOracle(JDBC)上でのUnicodeマッピングが違うという、あんまりな理由で起こります。 以下のURLに概要が書かれています。 http://otndnld.oracle.co.jp/tech/java/htdocs/javanls/javanls817.html http://otn.oracle.co.jp/cgi-bin/non/msgview_r.cgi?communityid=otn-697019&bbsid=1&no=6890&view=8 回避策としては、 ・文字化けする可能性がある機種依存文字を使用させない ・DB(JDBCドライバ)に文字コード変換をさせない (データ書き込みはJava側でコード変換してから、読み込みはバイト配列で取得してからJava側でコード変換) などが考えられると思います。

共感・感謝の気持ちを伝えよう!

質問者からの補足

bgbgさんご回答ありがとうございます。 ・DB(JDBCドライバ)に文字コード変換をさせない で回避できるのは (2)~(WAVE DASH) ∥(DOUBLE VERTICAL LINE)など で (1)(1)(○の中に数字) I(ローマ数字)のような機種依存文字 は回避できないということであっていますか? Oracleの文字コードがEUCでなくても(1)は解決できないのでしょうか?

関連するQ&A

  • oracle 10g ユーザやスキーマごとに文字コード指定

    oracle 10g ユーザやスキーマごとに文字コード指定 oracle10g使っています sjis sjistilde euctilde eucjptilde など いろいろ文字コードがあります 文字コードごとに それぞれインスタンスを別に しているのですが 1個のインスタンスに統一したいです ユーザやスキーマやテーブルなどで個別に文字コードを指定することは できないのでしょうか

  • oracle spool SJIS → UTF-8

    お世話になります。 掲題の件ですが、oracle10gでNLS_CHARACTERSETがJA16SJISTILDEのDBから spoolでCSVを出漁kする際にUTF-8にエンコードする方法はありますでしょうか? ご存知の方がいればご教示いただきたく存じます。 よろしくお願いいたします。

  • 機種依存文字の文字化けについて

    PHPでのはしご高(&#39641;)や立ち崎(&#64017;)などの機種依存文字の文字化けについてです。 まだ経験が浅いものですからアドバイスしていただけるとありがたいです。PHP関連で機種依存文字の文字化け解消方法をいろいろ調べ、大抵は文字コードをSJIS-winにすると治ったと書いてあり検証してみましたが・・・・結局うまくいきませんでした。試しに以下の通りフォームから受け取る値($_REQUEST)を確認してみると、機種依存文字「&#39641;」だけの場合と、そうでない「野原」の場合はきちんと挙動しているのですが、「&#39641;野」のように混ざったパターンをすると化けてしまいます。この段階で理由が分からずとまっています。説明不足とは思いますがどうかよろしくお願いします。 <?php mb_convert_variables("SJIS-win", "SJIS-win,cp51932,UTF-8,JIS,ASCII,EUC-JP", $_REQUEST); print_r ($_REQUEST); ?> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <br><br> <FORM method="POST" action="<?=$PHP_SELF?>"> 名前<INPUT size="25" type="text" style="ime-mode:active" name="name"> <INPUT type="submit" name="check" value=" 確認する"> </FOAM> </body> </html>

    • 締切済み
    • PHP
  • phpMyAdminの文字コード

    いつもお世話になっております。 phpMyAdminで機種依存文字が文字化けを起こします。 以前、機種依存文字について質問をさせていただきましたが その時とは別のサーバで別のシステムを開発しております。 <以前> *phpMyAdminから直接機種依存文字を入力→OK *EUCのフォームから機種依存文字を入力し、データベースに格納→OK <今回> *phpMyAdminから直接機種依存文字を入力→NG *EUCのフォームから機種依存文字を入力し、データベースに格納→NG コマンドでMySQLの文字コードを調べましたら、以下のように返ってきましたので、文字コードはEUCになっていると思っております。 show create database データベース名; | データベース名 | CREATE DATABASE `データベース名` /*!40100 DEFAULT CHARACTER SET ujis */ | また、1つUTF-8のテーブルを作成して、確認してみましたら *phpMyAdminから直接機種依存文字を入力→OK でした。 何をどのように変更したらいいのか、確認するためには何が必要なのか など、皆さまアドバイスをよろしくお願いいたします。

    • 締切済み
    • PHP
  • 機種依存文字について

    私はまだパソコンに触れて、4ヶ月もたっていないのですが、最近「機種依存文字」の存在を知りました。 今まで、文字のことはあまり気にせずに使っていていたのですが、周りの方に迷惑にならないように、機種依存文字について、詳しく知りたいと思っています。 実際に私がよく使うのは 【】 すみつきカッコ ♪ 音符 ☆ 星 … 3点リーダ などなのですが、皆様にはきちんと伝わっているのでしょうか? 「半角かな文字」「丸文字」(○の中に1)は駄目なようなことを聞いたのですが。。。 「きごう」と入力して出てきたものは、使わないほうがよいのでしょうか? 普段、OSは「WindowsME」「Windows98」を使っています。 「機種依存文字」について、詳しく知っていらっしゃる方、どうか教えていただけないでしょうか? 宜しくお願い致します。

  • 機種依存文字について

    http://php.nekosuke.com/000056.htm のソースを変換に利用しています。ページはutf-8統一です。基本的な質問かと思うのですが echo replaceText("(株)"); echo replaceText("(株)"); とやってもそのまま表示されるのですがこれで問題ないのでしょうか? メール送信時に文字化けするので置き換えるとの事ですがiso-2022-jpに変換されてから 送信直前に関数を実行するという解釈でいいのでしょうか?

    • ベストアンサー
    • PHP
  • 機種依存文字について

    いつもお世話になっております。 ものすごく初心者な質問で申し訳ないのですが、 OSがSolarisのOracleデータベースに(株)などの Windows系の機種依存文字は登録できますか? 機種依存文字について調べてみると だいたいのサイトがWindows系とMac系に分かれていて、 Solarisがどちらの分類に入るのかが分かりません。 以上です。よろしくお願い致します。

  • 機種依存文字について

    携帯の入力フォームで、文字化けする場合があるので、 下記の記事を参考に、指定の文字のみを抽出しようと思っていまsすが、 どうすれば、よいでしょうか、よろしくお願いいたします。 http://oshiete1.goo.ne.jp/qa1802902.html

    • 締切済み
    • PHP
  • 機種依存文字

    機種依存文字使用してない が 文字化けする

  • 機種依存文字が?になる

    HTML_QuickFormを利用してフォーム送信しているのですが 受信したメールを見ると特定の文字が?になってしまい 文字化けをしてしまいます。 具体的にはメールで確認した際に<input type="text" ・・・>に 入力した半角カタカナと機種依存文字が?に変わっておりました。 php,tplファイルは全てutf-8で保存されphpのソースは以下のようになっております。 header('Content-Type: text/html; charset=utf-8'); mb_language('Japanese'); mb_http_input('UTF-8'); mb_http_output('UTF-8'); mb_internal_encoding('UTF-8'); require_once 'HTML/QuickForm.php'; require_once 'HTML/QuickForm/Renderer/ArraySmarty.php'; require_once 'Smarty/Smarty.class.php'; $to = 'mail@ad.com'; $form = new HTML_QuickForm('inq', 'post'); $form->addElement('text', 'name', '名前', array('class' => text)); $form->addElement('text', 'ad', '住所', array('class' => text)); $form->addElement('textarea', 'msg', 'コメント', array('rows' => 8, 'cols' => 30)); $value = $form->getSubmitValues(); if (isset($value['accept'])) { $subject = '連絡'; $message = <<<EOD 【名前】 {$value['name']} 【住所】 {$value['ad']} 【メッセージ】 {$value['msg']} 【メッセージ】 {$value['msg']} EOD; mb_send_mail($to, $subject, $message, "From: {$value['連絡']}"); $form->freeze(); ~略~ 半角カタカナの件は $message = mb_convert_kana ($message, 'K'); とし解決したのですが機種依存文字の解決策が見つからず自分なりに なんとか調べてみたところ下記のurlがみつかりました。 http://shimax.cocolog-nifty.com/search/2007/12/phpeucjputf8_f714.html utf-8では機種依存文字が?になるのは当たり前のことなのですね。 これを応用しなんとかできるかと思い下記のようにしてみたのですが 結果は同じでした・・・ $message = mb_convert_encoding(mb_convert_encoding($message,"sjis-win","UTF-8"),"UTF-8","sjis-win"); どのようにすれば解決できるものなのでしょうか? 宜しくお願い致します。

    • 締切済み
    • PHP