• 締切済み

その他(プログラミング)というか、デバッグの方法論について

おそらく言語は問わないと思うのですが、2日悩んでも解決しないバグがあり、 みなさんならどういうアプローチをするかを教えていただけたらと思いました。 現象 ・CGI(perl)から共通モジュールをコールしてDB(サイベース)から 名前を取得する際、日本語が文字化けしてしまいます。 ・試験環境ではおこらず本番環境でのみ起こるバグです。 CGIのバグか、プロシージャのバグか、 はたまたDBのデータに左右されるバグかの切り分けを行おうとしいるのですが、 ・CGIは、共通モジュールも含めて試験環境と同じ(試験環境では動作O K) ・プロシージャとDBのデータは、共通モジュールをコールするperlでhttp配下に作成したファイルは本番環境でも文字化けを起こさない。 なので、原因がわからずちょっと困っています。 httpsのサーバの設定ということもありえるのでしょうか? ちなみに、httpsからだと、共通モジュールからの復帰値が 既に文字化けしてしまっています。 まったく同じ引数でhttpからだとうまくいくのに、です。 英数字のデータは全て正しく取得できています。 なにとぞよろしくお願いいたします。

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

ちょっと面倒な障害にぶち当たったときに、私がとるアプローチは、   『間違っているはずがない』というところを疑う です。 もちろん、闇雲に原因と思われるところを探してゆくのではなく、きちんと状況分析と 原因の推定をやり、障害の切り分けをしたうえで、の話です。 # 直接的な回答じゃなくて、申し訳ない

yumi-mika
質問者

お礼

ありがとうございます。 文字コードの環境変数が未定義でした。 明示することで解決しました。

  • hogeta
  • ベストアンサー率14% (4/28)
回答No.1

日本語のロカール、文字コード等の設定は大丈夫でしょうか?

yumi-mika
質問者

お礼

ありがとうございます。 文字コードの環境変数が未定義でした。 明示することで解決しました。

関連するQ&A

  • POSTでデータを送信する方法。

    他のサーバーのCGIに対してPOSTでデータを送信する方法を探しています。 Perlバージョンは5.8 使用可能モジュールはPerl5.8 標準モジュール もしくはPurePerlモジュール この環境でPOSTを扱う方法をご存知でしたら、教えていただきたく思います。

  • perlのDBIモジュールからmysqlへデータを送ったら文字化けします。

    こんにちは。 タイトル通り、perlのDBIモジュールからデータベース(mysql)にデータを渡してみたのですが(INSERT INTOです。)phpmyadminというDB管理ツールでテーブルの内容を見てみると、文字化けしてました。 フォームより受け取った値(文字列です。もっというと名前)をCGIでデータベースへ追加するといったことをしています。ソースは以下のとうりです。 require 'cgi-lib.pl'; my %formin; &ReadParse(\%formin); $sei=$formin{'sei'}; $mei=$formin{'mei'}; あとはこの変数をDBIでデータベースに渡すだけなので略します。 データベースへデータを渡したとき、文字化けさせないためには、どうしたらいいのでしょうか? 初歩的なことかもしれませんが、どうかお力を貸してください。お願いします。

    • ベストアンサー
    • MySQL
  • DBIについて質問です

    perl内でDBIのモジュールを使うには何かインストールしなければいけないのですか? CGIモジュールのようにデフォでperlに入ってるものだと思っていたのですが、DBにアクセス出来てないっぽいのです。 もしDBIモジュールについて判りやすく説明されているHPや、教えて下さる方が居ましたらよろしくお願いします。

  • 【Servlet】Linux環境でSJISファイルから読み込んだデータをDB登録後の文字化け

    Linux環境でSJISファイルから読み込んだデータをDBに登録するとデータが文字化けしてしまいます。 Windows環境で同じ処理を行うとDBに登録されたデータは文字化けしません。 上記文字化けの原因は、プラットフォームごとに設定されているデフォルトのエンコーディングで変換されてしまっているということでしょうか? また、Linux環境で文字化けしないでDBにデータを登録するにはどうしたらよいのでしょうか? 【環境】 Miracle Linux Oracle 10g

    • ベストアンサー
    • Java
  • 異なるDBの値比較方法

    まったく同じジョブの内容でスケジューリング方法を変えて実行した時、その前後でDBの内容が同一であるか検証する方法を考えています。 DBはoracle9、テーブル数は約100強、エクスポートすると約500MBです。 検証方法は、処理前に本番データをエクスポートし、それを検証環境にインポート、検証環境でスケジュールを実行して、まったく同じ結果を得られるかを検証します。 以下の案を思いつきましたが、イマイチぴんときません。何かいい方法を教えてください。 案1 DBをDBリンクで接続し、オブジェクトブラウザのオブジェクト比較機能を使う。 →簡単にできるが、結果を得るの時間がかかりすぎる。 案2 DBをDBリンクで接続し、検証用プロシージャを作成して比較する。 →user_tables, user_tab_columnsなどを使うプロシージャの作成が面倒。 案3 処理実行後に、本番と検証環境でそれぞれテーブルごとにエクスポートし、エクスポートファイルをUNIXでソートした上で、uniqコマンドで比較する。 →これが現実的?

  • 機種依存文字の文字コード変換

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

    • ベストアンサー
    • Perl
  • 文字化けとパスワード変更

    perlでCGIを作っています。入力フォームで文字を入力すると、text.dataでは文字化けしています。CGI上の文字は大丈夫なのですが・・。どのように対処すればいいでしょうか? あと、if構文を試していたら、正解を書いても、パスワードを変えても対応せずに間違いだという画面しか出ません。必要があればプログラムも載せます。考えれることを教えてください。

    • ベストアンサー
    • CGI
  • SQLサーバ2000へのインポート方法とその他

    こんにちは。 SQLサーバはまったくよく分からないですが、いくつか教えていただく助かります。 業務では下記のように、メインフレームから生データ(CSVファイル)をWindows2000へFTPし、SQLサーバへインポートし、その後ストアドプロシージャを実行します。 条件としては、メインフレームから不定期にFTPがおこなわれ、つづいてFTPが終了したことを通知するためのREXEC処理がコールされます。 メインフレーム ↓ Windows2000 ↓ SQLサーバ この時の具体的なテクニックを教えてほしいのですが、経験のない私のイメージはVBなどでADOを使ってファイルをインポートし、SQLサーバ内のストアドを実行するという感じです。 ↓ (1)メインフレームからファイルFTP(PUT) (2)メインフレームからVBで作成したモジュールを起動。 (3)VBはCSVファイルをDBにインポート (4)そしてVBからストアドプロシージャを実行(これは可能?) 現在はどのような仕組やツールが一般的なのでしょうか? 詳細に教えていただけると助かります。 よろしくお願いします。

  • JDBCによるストアドCALL

    今日はJDBCによるストアードプロシージャCALLについてお伺いします。 ストアードプロシージャのCALL文では以下のように宣言しますが、{}は必要なのでしょうか? con.prepareCall("CALL KRVZZ01Z(?,?)")  ・・・・(1) con.prepareCall("{CALL KRVZZ01Z(?,?)}") ・・・(2) どの本にも(2)のように記述してあるのですが、私の環境では(1)でも動きました。 いらないのでしょうか? 環境はDB2とJDK1.3です。 よろしくお願いいたします。

  • TXTに出力すると文字化けが起こる

    Ajaxで送信したデータを元にCGI(Perl)でTXTファイルを書き換えると、 どうしても文字化けしてしまいます。 内容はこんな感じです。無駄な部分は省きました ************************* #!/usr/local/bin/perl print "Content-type: text/html; charset=Shift_JIS\n\n"; use CGI; $n = $q->param("name"); $data = "$nさん、こんにちは"; open(F,"> data.txt"); flock(F,2); print F $data; flock(F,8); close(F); end; ************************* $n(フォームのデータ)は文字化けしないのですが、 「さん、こんにちは」の部分が文字化けしてしまいます。 詳しい方、ご教授願います。

    • 締切済み
    • CGI

専門家に質問してみよう