• 締切済み

Solaris9 + Java 日本語文字化け問題

現在Solaris9上で動く、Javaのファイルアップロードのアプリケーションを作成しています。 今、文字化けに悩まされていて、どなたかの知恵を拝借できればと思い、質問させていただきました。 問題となっているのは、日本語をファイル名に含むファイルについてです。 日本語をファイル名に含むファイルをブラウザからアップロードすると、日本語の部分が化けて「?」となってしまいます。 試しにdumpして、文字コードを確認してみたのですが、文字コード自体はちゃんと受け取ることができていました。 ただ、その文字を出力しようとすると、日本語の部分が「?」に化けてしまっています。 ファイルの中身自体は、バイナリーデータで書き込んでるので、ダウンロードしても問題なく見れるのですが、ブラウザから、アップロードしたファイルを参照したり、TeraTermなどの端末からlsコマンドで見ると日本語の部分が「?」になってしまっています。 文字コードが正しく渡ってきていることから、Java側の問題ではなく、日本語をファイル名に含むファイルを作成するときに、Solaris側でうまく書き込めていないのではと思い、このカテゴリーに質問させていただきました。 ちなみに、Java側からログファイルにSystemoutするときも、日本語の部分は「?」になってしまいます。 なにぶんSolarisを使うのが初めてなもので、どこをどう見たり設定すればよいのかわからず、途方にくれています。どなたか解決策をお持ちでしたら、ご教授願います。 環境 Solaris9 J2SDK1.4.2

  • wiser
  • お礼率50% (3/6)

みんなの回答

回答No.2

日本語文字列が ? になるのはJava側の問題と考えてほぼ間違いないと思います。 Javaは文字列を内部ではUnicodeに変換して保持しています。このため、読み込みの際にShift_JISのような別の文字コードをJavaがStringを作る前にUnicodeへ変換する処理が入ります。この際、対象の文字コードからUnicodeへ変換が失敗した文字列は ? (U+FFFD REPLACEMENT CHARACTER)に置き換えられます。(ちなみに普通の ? は U+003F) 一方Solarisのファイルシステムはその書き込み時にはもとの文字コードイメージのままファイル名がつけられ、特別変換は行われません。(なので、Shift_JISのファイル名とEUCのファイル名を同一ファイルシステムに混在させることも可能) 以上のことから、Java側とくに、アップロードモジュールのファイル名を切り出している部分に問題があると考えられます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

ls |cat とやると正常に見えるかもしれないとか, Java って Unicode (UTF-16) を使っていると思ったけど Solaris 9 のファイルシステムはどうだっけなとか思ったり.

関連するQ&A

  • Solaris8でCD-ROMの文字化け

    Windowsで作成したCD-RをSolaris8でマウントすると一部のファイル名が文字化けします。これはCD-Rの焼き方とSolarisの設定のどちらの問題なのでしょうか?なお、ファイルは問題なく使用できるようなので、表示上だけの問題のように思えます。 例えて言うと昔のWindowsでファイル名が長すぎて文字化けしてしまうのと同じような感じに見えるのですが、これはどうやって解決したらいいのでしょうか?よろしくお願いします。 ※ちなみにWindowsでは正常に見えます。 Windowsで見た場合  APPAgent.SOLARIS.3.0.0.tar.Z Solarisで見た場合  appage~1.z ●環境 Solaris8 WindowsXP Windows2000

  • FTP 文字化け

    FTPを使って、自宅サーバーから友人にファイルを配りたいと思っているのですが 日本語ファイル名が文字化けしていたり、表示自体されません。 FTPサーバーはProFTPd、クライアントはブラウザからダウンロードしようと考えています。 サーバーのOSはvine linux5.4です。 DLする側の文字コードなどを変更しないで文字化けさせない方法はありませんか?? Linux自体のシステムの文字コードを変えればいいのでしょうか? それともファイル名を半角に変更するしかないのでしょうか?? 回答お願いします・・

  • 一般的な文字化け対処をしてみたのですが、文字化けが直りません。

    レンタルサーバー『ロリポップ』を先日借りまして、以前作ったサイトをそっくりそのまま移行したのですが、日本語部分が文字化けしてしまいました。 いろいろ調べてみまして、メタタグの文字コード指定をいじってみたり、ブラウザ自体の文字コード設定をいじってみたりしたのですが、全く変化なしです。 ブラウザがおかしいのかと、携帯のフルブラウザでも確認したところ、同様の文字化けの様子が見られます。 以前のサーバーでは問題なくどんなブラウザでも表示されてましたし、携帯でも見ることができました。 とすると、サーバ側に問題があるのでしょうか。 作成ソフトはGolive5.0で、こちらのエンコードの設定も変えてみましたが何も変化はありません。 メタタグもソフトのエンコードもShift_JISに設定しています。 一応他の文字コードでも全部試したのですが、文字の表記が変わるだけで正しく表示される事はありませんでした。 考えられる理由にお心当たりのある方はアドバイスいただけると幸いです。

  • 日本語だけ文字化け

    Solaris上で、Perl(5.005_03)を用い、DB(Oracle10.2.0)のデータを抽出しブラウザで表示させた際に、日本語のみが??????という感じに、半角の"?"で表示されてしまいます。 Solaris上で、cgiファイルを標準出力したり、Perlのデバッガで表示させると問題なく日本語表示されます。また、ブラウザでもDBから抽出した文字以外の日本語は問題なく表示されます。加えて、OUT関数を用いても、やはりDBから抽出した値のみ?表記になってしまいます。 下記に利用したCGIを書き出してみます。(DB接続以降の記述のみ) ------------------ここから--------------------- my $dbh = DBI->connect($datasrc, $username, $password) || die DBI::errstr; my $sql = "SELECT AAA FROM XXXXX"; my $sth = $dbh->prepare($sql) || die $dbh->errstr; $sth->execute || die $dbh->errstr; print "Content-type: text/html\n\n"; print "<HTML>\n<HEAD>\n"; print "<TITLE>DBテスト</TITLE>\n"; print "<meta http-equiv=Content-Type content=text/html; charset=Shift_JIS>\n"; print "</HEAD>\n<BODY>\n"; print "DB接続テスト<P>\n"; # display results my @results; my $count; while($count < 2) { @results = $sth->fetchrow; print "あああ"; print "@results\n<P>"; print ,$count++,"行目\n"; } $sth->finish; $dbh->disconnect; print "\n</BODY>\n</HTML>\n"; ------------------ここまで--------------------- ブラウザ表示の結果は、 DB接続テスト ???????? ???????? となってしまいます。"DB接続テスト"は正常に表示されて、print "@results\n<P>";が????に置換わり、"行目\n"が非出力となってしまいます。DB(AAA列)の値が数字や英数は問題なくブラウザ表示されます。 日本語全てが一律文字が置き換わるのであれば、文字コードの問題だと疑うのですが、SELECT文の日本語のみが、?というのはどうしてなのかがわかりません。また、Solaris上でのデバッガーや標準出力は問題なく、ブラウザやOUT関数でファイルに書き出すと、?になるのもわかりません。 もし、ご存知の方がいらっしゃいましたら、教えてくださいm(_ _)m

  • Solaris, SQL*PLUSの文字化け

    SolarisからplsqlコマンドでSQL*PLUSに接続すると、 文字化けが発生してしまいます。 Tera Termの端末設定の受信・送信文字コードを(EUCからS-JIS)に変えると、 SQL*PLUSに接続したときの文字化けは直るのですが、 今度は、.sqlファイル内の日本語の部分が文字化けしてしまいます。 文字化けを全て解消する方法は無いでしょうか?

  • 日本語ファイル名のアップロードとダウンロード

    日本語ファイル名のデータを、ブラウザ上のフォームを使ってWEBサーバにアップし、それらをブラウザに一覧表示させてリンクを張り、そのリンクをクリックするとダウンロードできるようなPHPスクリプトを作りたいと思っています。 URLエンコードを行い、日本語ファイル名を半角文字列に置き換えれば問題ないだろうと思ったのですが、URLエンコードされたサーバ上のファイルにさえアクセスできません。 サーバの文字コードがEUCなので、すべてEUCで作成しているのですが…。 例えば、「あ.txt」というファイルを、EUCで作成したフォームでURLエンコードをしてアップロードすると、「%A4%A4.txt」というファイルがサーバにアップされます。 そこで、「http://。。。/%A4%A4.txt」にブラウザでアクセスすると、403エラーが出ます。 次に、ブラウザに一覧表示させたリンク文字列を右クリックして保存しようとすると、「?¢.txt」というファイルを保存しようとするため、ファイルが見つからないとのエラーが出ます。 いろいろな文字コードでファイル名をエンコードしたり、PHPファイルの文字コードを変更したりして試してみたのですが、うまくいきませんでした。 どうすればいいのか教えていただけないでしょうか? なお、日本語は使わない方がいいということは承知しておりますが、数十個ある日本語ファイル名のデータを頻繁に更新しますので、その都度ファイル名を半角に書き換えることは避けたいと思っています。 元々のファイル名も、仕様により日本語である必要があります。 以下、当方の環境を記載いたします。 「ローカル」 WinXPsp2、IE6 「サーバ」 共有レンタルサーバ Apache

    • 締切済み
    • PHP
  • 日本語QRコードの文字化け

    fi-7460+PaperStream Capture Pro Scan Station(DP)で、日本語QRコードで分割しています。QRコードを作成するソフトにより、読み取った日本語部分が文字化けします。 シフトJIS指定で作成しても、文字化けが治りませんでした。スキャナー側での設定方法はあるのでしょうか?。 ※OKWAVEより補足:「「ScanSnap/fiシリーズ/HHKB」商品について」についての質問です。

  • 日本語が文字化けするんです。

    WINDOWS2000を使用しています。apache_1.3.26 php-4.2.2でプログラムを作成し始めた初心者です。テキストエディタで文章の中に日本語を入れてphp文書として保存し、ブラウザで見たら日本語の部分が文字化けしてたり消えてたりするんです。どうやら、phpのマルチバイト関連の設定に不備がある、というらしいのですが、詳しく分からないので、どなたか詳しい方教えて下さい。宜しくお願いします。

    • 締切済み
    • PHP
  • BASP21のFTPで日本語ファイル名文字コード変換方法

    BASP21のFTP機能を使って、ファイルをアップロードする処理を作成しています。 アップロード後、そのファイルをある文字列で検索して、 ファイルを読み込む処理があるのですが、検索されないため、 調べてみたところ、日本語ファイル名が文字化けしてるのがわかりました。 クライアントはWindowsなので、ファイル名は"Shift_JIS"です。 サーバーのプログラムでは、"UTF-8"で処理してるために検索されないことがわかりました。 ffftpなどのFTPソフトには、リモート側のファイル名漢字コードを設定する機能があり、 "UTF-8"でアップロードすることができましたが、BASP21には見当たりません。 いろいろ調べてもわからなかったため、ここで質問させてもらいました。

  • MySQLへの吐き出し日本語が文字化けする

    自分なりに調べてみたのですが,わからないのでお尋ねいたします。 phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。 同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。 ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。 日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。

    • ベストアンサー
    • PHP