• ベストアンサー

EUC_JPにない文字のshiftJISからの変換処理

http://okwave.jp/qa757480.html ここにある質問と同じ状況になっています。 shiftJISの文字列をEUC_JPに変換したところ、 invalid byte sequence for encoding "EUC_JP" というエラーが出ました。 EUCにない文字なので変換が出来ないのはわかるのですが、ではその場合どのような処理が妥当でしょうか。 テキストデータから文字を取り込んでいるので最初から文字をEUC_JPやUTF-8で文字列を作ることができません。 EUCにない文字はどうやっても変換できないので代替文字もしくは記号を置くことで解決しようかと思ったのですが、そうするとどの文字がshiftJISにあってEUCにないかの一覧がないとどうしようもないかと思います。 この場合はどうするのが良いかアドバイスいただけませんでしょうか。

  • Perl
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

そのメッセージはPerlが出しているものですか? また、エンコーディングの変換はどのように行っていますか? 参考に挙げられている質問を見ると、jcode.plともJcode.pmとも つかない(前者っぽいですが)のですが、これらは invalid byte sequence for encoding のようなエラーメッセージは出すように見えません。 Googleでエラーメッセージを手がかりに検索してみるとPostgreSQLが 絡んでいるようですけど。 とりあえず、Encode.pm で変換すれば、変換先エンコーディングで 表現できないものをどうするかをある程度制御することができます。 くわしくは perldoc Encode で調べてみてください。

関連するQ&A

  • PostgreSQLでエラーinvalid byte sequence for encoding "EUC_JP": 0x9363

    教えてください。 ■環境 Apache2 PHP5 PostgreSQL8 すべて文字コードEUC-JP PHP5にてcsvファイルを取り込み mb_convert_encodingでSJIS→EUC-JPへと変換後 PostgreSQLへinsertしているのですが、 下記エラーが発生してしまいます。 PostgreSQLでエラーinvalid byte sequence for encoding "EUC_JP": 0x9363 http://shimax.cocolog-nifty.com/search/2005/06/invalid_byte_se_6658.html 上記にヒントがありますが、 解決に至っておりません。 取り込めないcsvデータを添付しますので、 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • javaでEUC-JP文字列→UTF-8への変換

    DB内にEUC-JPで保存されているデータを取得して、これをUTF-8文字列として扱いたいです。 phpでいうところの$string = mb_convert_encoding($string, "UTF-8", "EUC-JP"); をjavaで実現したいです。 どのように記述すれば変換できるのでしょうか? 検索しても、数十行もコードを書いて実現しているものばかりで、 シンプルな方法が見つかりません。 javaには難しい処理なのでしょうか…

  • EUC_JPの文字化け

    指定された文字列(String型)を以下の様にバイト配列で保持し、 byte[] work = "指定文字列".getBytes(encoding); そのバイト配列を使用し、再度、以下の様にStringを生成します。 new String(work, encoding); (作成したプログラムを添付したいのですが、文字数の関係で割愛します。) 指定文字列は機種依存文字(丸数字等)にします。 この時、encodingにMS932、UTF-8等を指定した場合は問題なく元の文字列が 取得できますが、EUC_JPを指定すると、?に文字化けを起こします。 調査すると、getBytesでbyte配列を取得した時点で既に変換不良を起こしていました。 (丸数字全てが0x3fになっていました。期待していたコード、というか本来は、0xADA1~0xADB4のはずです。) そこでStringクラスのgetBytesメソッドをオーバーライドしちゃえという、甘い考えが浮かび、 javaのソースコードでString.javaを見ましたが、結局のところ、どこでコード変換を行っているのか よくわかりませんでした。 そこで質問です。 1)これはJDKのバグなのですか? 2)こんな経験がある。あるいはこういう対処をした。というかた、おりましたら、   参考URLでも構いませんが教えてください。 以上、よろしくお願いします。

  • euc-jpからutf-8の文字コード変換について

    現在、何らかのhtmlを取得する際にはurf-8で統一しようと思っているのですが、 たとえば <?php $f=file_get_contents("http://blog.livedoor.jp/dqnplus/")//文字コードEUC-JP; $f = mb_convert_encoding($f,"utf-8","eucjp-win,utf-8,sjis-win,EUC-JP"); echo $f; ?> では、EUC-JPからの変換がうまくいきません。 ……というより、EUC-JPのエンコーディングのみ失敗してしまいます。 (文字化けしたもののみ抽出すると、すべてEUC-JPでした) どのようなコードを書けば、正常にエンコードできるでしょうか。 どなたかご教示のほど、どうかよろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP
  • ASCII文字列をEUCなどに変換したいができない

    いつもお世話になっております。 ファイルの文字コードがEUCのファイルの中に、 なぜか、文字コードがASCIIである文字列があります。 この文字列は、外部から受け取るカタチなので、 これはこれで、ASCIIでも、しかたないのかなという風に思い、 それならば、受け取った後、EUCに変換すればいいやと考え、 mb_convert_encoding($var,"EUC-JP","ASCII")を使って、変換を試みるも、 ASCIIのままなのです。 ASCIIである文字列には、変換されない鉄壁さというものがあるのでしょうか? 変換処理後に、mb_detect_encoding()で検査しますが、やはりASCIIのままです。 それならば!、ということで、 受け取る値(ここでは例として、"This_Value_is_ASCII_Encoding_hogehoge9999")を いったん手動のコピペ操作をして、 $UketoruAtai = "This_Value_is_ASCII_Encoding"; とし、 その値もやはり、ASCII文字列になっているので、 この、手動コピペ文字列ならば文字コードの変換はできるだろうと思い、 上記のmb_convert_encoding()の処理をしたわけですが、 この場合でも、やはり ASCIIは鉄壁でした。 いったい、これは、なんなんでしょうか、、、。 ちなみに、このASCII文字列は、英数字のみ(当たり前か。笑)の文字列です。 このASCII文字列を、EUC-JPにする手助けを、どなたか宜しくお願い致します。

    • ベストアンサー
    • PHP
  • psqlの文字コードエラー

    psqlでDBを作りたいのですが データを入力する際に、invalid byte sequence for encoding "EUC_JP"というエラーが出て日本語の入力ができません。 使用しているOSは Fedora Coreで 文字コードを UTP-8を変換しようとしています よろしくお願いします。

  • VC++でEUC->ShiftJIS変換

    現在、VC++はじめて1週間です。MSDNがない為HELPが参照出来ません。 VC++にてプログラムを作成しているのですが、EUC→ShiftJIS変換を行いたいのですが、関数は用意されているのでしょうか。 また、用意されていない場合、フリーのライブラリ等ご存知の方がいらっしゃいましたら、教えて頂けないでしょうか。 よろしくお願いします。

  • invalid byte sequence for encoding "EUC_JP":0x904b について

    http://www.komonet.ne.jp/script/db_group.htm http://www.komonet.ne.jp/script.htm こちらのPHPスクリプトを設置したのですが、データベースに書き込みができません。 データベースの名前とユーザー名も正しいのですが、 pgsql/server.logに以下の文章が記録されます。 invalid byte sequence for encoding "EUC_JP":0x904b どうしたら直るのでしょうか? phpソースの中にx-sjisという部分があるので、そこをEUC_JPに書き換えたのですが、ページが真っ白になってしまいました。 ただいま勉強中ですので、どなたか教えていただけないでしょうか? 宜しくお願いします。

  • EUCからUTF-8へのコード変換

    いつもお世話になっております。 C++でEUC-JPで書かれた文字列をUTF-8に変換するプログラムを作成したいのですが、変換ルーチン(TBL等)をどのように書けば良いか分かりません。 サンプル等があれば教えて頂けないでしょうか? 提供されているライブラリ等は使用しない(できない)予定ですのでお願いします。

専門家に質問してみよう