- 締切済み
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)他に文字化けに関して良い回避策・注意点があれば教えてください。
- ryu003
- お礼率65% (13/20)
- Java
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bgbg
- ベストアンサー率53% (94/175)
(1)ですが、Java側で正常にUnicode<=>EUC変換できる文字であれば大丈夫でしょう。 どの文字ができてどの文字ができないかは実際に実験して確かめてみた方が良いと思います。
- 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側でコード変換) などが考えられると思います。
関連するQ&A
- Fedora Core2での文字化け
ターミナルでの文字化けを検索すると /etc/sysconfig/i18nの変更がヒットします。 LANG="ja_JP.euc_JP" SUPPORTED="ja_JP.euc_JP:ja_JP:ja" SYSFONT="latarcyrheb-sun16" これでいくと、リモートからputty.exeなどでtelnetした 際は文字化けしませんが、サーバーのターミナル上では 文字化けします。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=966286 にはターミナルの設定をEUCにしてくださいとありますが、 サーバのターミナルの文字コードはどこで変更するので しょうか? よろしくお願いします。
- ベストアンサー
- Linux系OS
- HTMLの文字化けについて
HTMLの文字化けについて クライアントPC(WindowsVista)で作成したHTMLファイルをサーバ(CentOS5.4)にアップして、ブラウザから確認してみたところ、文字化けを起こしてしまいました。 ローマ字は問題ないのですが、日本語が文字化けしてしまっており、表示がめちゃくちゃになってしまっています。 HTMLはK2Editorにて作成して、文字コードはShift-JIS、改行コードはCRLFとしております。 しかし、文字化けした状態でブラウザの文字エンコーディングをEUC-JPに変えて再度読み込んでみたところ、文字化けせずに表示されます。 サーバ側の文字コードは、 # vi /etc/sysconfig/i18n LANG="ja_JP.EUC-JP" と設定し、デフォルトのUTF-8からEUC-JPに変えております。 なので、もしかしたらサーバ側の文字コードとHTMLの文字コードが何か関係しているのかと私は思うのですが・・・ 文字化けの原因がお分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。
- ベストアンサー
- HTML
- OSから返ってきた文字が文字化けしてしまう
OS:Linux9 PHP Version 4.3.10です。 exec("whois -h whois.jprs.jp $host,$output); print implode($output,"<br>"); とすると文字化けしてしまいます。 まず確認したのが ファイル名:/etc/sysconfig/i18n ------------------------------ #LANG="C" LANG="ja_JP.eucJP" #SUPPORTED="C:C:C" SUPPORTED="ja_JP.eucJP:ja_JP:ja" SYSFONT="lat0-sun16" SYSFONTACM="8859-15" ------------------------------ ■スクリプトファイルの文字コード EUC-JP(エディタで確認しました) ■ブラウザで実行した場合の文字コード EUC-JP(<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">を挿入) ■$outputの文字コード print mb_detect_encoding($output[$i]); (配列全て調べましたが、UTF-8でした) ■苦肉の策 ファイルの文字コード、表示エンコードをUTF-8にしても同じく文字化けしてしまいます。 どなたか同じような経験をされた方、情報いただけないでしょうか?
- 締切済み
- PHP
- linuxでの文字化けについて
例えば「ls a」とかで存在しないファイルを指定した時に文字化けします。 文字コードはデフォルトのままですがEUCです。 /etc/sysconfig/i18nの中身は LANG="ja_JP.eucJP" SUPPORTED="ja_JP.eucJP:ja_JP:ja" となっています。 何が問題なのでしょうか? 教えて頂けると助かります。
- ベストアンサー
- Linux系OS
- Macでの文字化け回避
エンコードがEUC-JPのサイトを運営しています。 これはhtmlを表示する際にphpを使っているためで、JISにしようとすると不具合が出そうなのであくまでEUCのままで文字化けを回避したいと思います。 ヘッダーの最上部に <meta http-equiv="Content-Type" content="text/html" charset=EUC-JP /> <!-- 龠 --> と書いてありますが、Macだと度々文字化けを起こすらしいです。 Winでは一応正しく表示されはしますが、ページを右クリックして「エンコード」から「日本語(自動選択)」を選ぶと文字化けします。 今のところ原因らしいものは、レンタルしているサーバーがhtml内に日本語(Sift_JIS)のコメントを挿入していることくらいです。 色々開設サイトを読んだのですが、どうしても上記の状態でお手上げになっています。 アドバイスをいただけませんでしょうか。
- ベストアンサー
- その他(インターネット・Webサービス)
- 機種依存文字
いつもお世話になっております。 機種依存文字について質問させていただきます。 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
- jspの文字化けについて
こんばんは。 今日、入力フォームに入れた情報をMysqlに格納するjspを作りました。ボタンを押すとSQLに入るのですが、ここでSQL側で中身を 見てみると文字化けしています。 これを改善する方法をご存知の方ご教授いただけませんでしょうか? また、jspのほうの送信データの文字コードを変更する方法につきましてもご存知の方いらっしゃいましたら アドバイスをお願いいたします。 今はWindows-31Jです。
- 締切済み
- Java
- Javaで機種依存文字を表示できない
※以下に記載する【高】は(はしご高)という機種依存文字として記載します。"はしご高"を入力すると、OKWaveで表示しないためです。。 JDBC経由で、PostgreSQLのDBより【高】という機種依存文字を含む文字列を取得しようとしたところ【高】の文字が抜けた状態でしか取得できません。 "高橋" → "橋" として取得してしまう。 ※ Eclipseのデバッグ機能を使用し、DBからデータ値を取得した直後の値を参照しました。 JAVAで機種依存文字【高】を取り扱い、コンソールなどに出力することはできるのでしょうか? Java : JDK1.5.03 PostgreSQL : 8.1.3 : DB文字コード EUC-JP JDBC : postgresql-8.1-408.jdbc3.jar -- 以下プログラム例 Connection con = null; Statement stm = null; ResultSet rs = null; String rtn = ""; try { stm = con.createStatement(); rs = stm.executeQuery(query); rs.next(); rtn = rs.getString(1); ←←←← ここでの変数を確認! System.out.println(rtn); ←←←← ここでの表示を確認! }
- ベストアンサー
- Java
補足
bgbgさんご回答ありがとうございます。 ・DB(JDBCドライバ)に文字コード変換をさせない で回避できるのは (2)~(WAVE DASH) ∥(DOUBLE VERTICAL LINE)など で (1)(1)(○の中に数字) I(ローマ数字)のような機種依存文字 は回避できないということであっていますか? Oracleの文字コードがEUCでなくても(1)は解決できないのでしょうか?