• ベストアンサー

数字の文字化けについて

Perlで書かれたショッピングカートCGIを使用していて、 注文があると、注文内容の控えメールを 自動でお客様に送信するようになっているのですが、 そこに振込先の銀行口座番号を記載しています。 ----------------------- イーバンク   ワルツ支店  (普)*******  ノビ ノビタ ----------------------- 上のように記載した場合は文字化けしないのですが、 下のように記載するとハイフンを含む前半部分の数字が文字化けします。 (*は半角の数字です) ----------------------- ゆうちょ銀行  *****-******  ノビ ノビタ ----------------------- スクリプトはShift-JISで書かれています。 口座番号を記載しているのは、 $mailbody .= <<EOD; この間です。 EOD 文字化けすると困る箇所なので、原因と解決方法をご存知の方がいらっしゃいましたら 教えていただけますと助かります。

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

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

SJISで全角スペースの文字コードは 0x8140(\x81\x40) です。 0x40 はPerlで配列変数の接頭辞を表す @ に相当します。 Perlではスクリプトソースコード中のダブるクォート定数文字列内に 含まれている変数は展開挿入されてしまいますので \x40 以降に 変数として使用可能な文字列が続いている場合、それを配列として 展開挿入してしまいます。 そのため、あまり全角スペースを直接使用するのは好ましくないです。 SJISのまま全角スペースを表現したい場合は "\x81\x40" のように するかシングルクォートにして展開挿入しないようにするか、 外部ファイル化してopenなどで読み込むかなどをしないといけません。 これはバックスラッシュ問題と同様のPerlスクリプトをSJISで書いた 場合の問題です。 ヒアドキュメントで << の後に付ける文字列をクォートで囲まない 場合、ダブルクォートと等価になりますので、次のようにシングル クォートで囲んでみてください。 $mailbody .= <<'EOD'; この間です。 EOD

romarie_me
質問者

お礼

ありがとうございます。 今回は、全角スペースを入れなくても構わないので、取ろうと思いますが、 教えていただいた方法を試したら、文字化けしなくなったので、 次にこういった機会がありましたら、活用させていただきたく思います。 大変ご丁寧なご回答をありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.1

数字の直前に "全角空白" がありませんか。 考えられる原因はこれくらいです。

romarie_me
質問者

お礼

ありがとうございます。 全角スペースを消したら、文字化けしなくなりました。

romarie_me
質問者

補足

ご回答ありがとうございます。 はい、全角のスペースが入っています。 そうですか、そのせいなのですね。 イーバンクの方も(普)の前にスペースが入っているのですが、 次に来る文字が日本語ならば大丈夫なのですね。 全角スペース+数字がダメなのでしょうか。 全角スペースを消して試してみます。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • KENT-WEBのclipmailで文字化け

    KENT-WEBさんで配布されているclipmailをお問い合わせフォームとして使っています。 ユーザーに住所や電話番号を入力してもらうんですが、そこで全角ハイフンを使用されると(○○町1-3-15や0120-000-000等)こちらに送られてくる控えメールの全角ハイフンを使用したところが文字化けしてしまいます。 Shift-jisなので全角ハイフンは文字化けするのかもしれませんが、KENTさんのスクリプトはshift-jis対応ですし、既に運用中なので他のプログラムに変更することも考えていません。 なので全角ハイフンを、住所欄や電話番号欄で使用するとエラー表示になり送信できない、という対応をしたいのですが、どうすればいいのでしょうか?

    • ベストアンサー
    • CGI
  • CSVの文字化け解決で他の方法ありませんか?

    質問致します。 CSVをダウンロードするとある1列だけ文字化け致します。 もともとは10ケタの数字(ハイフン等もなし)なのですがダウンロードすると 全ての行が9.78482E+12と文字化けしてしまいます。 以下のURLで実践しましたが出来ませんでした。 http://okwave.jp/qa/q919424.html 他に方法はありますでしょうか? Excel2007を利用しています。

  • ぱるる 数字が14個?

    オークションで落札し、相手方から連絡が来ました。 口座番号 1××××―2 2■■■■■■■ ハイフンの次の数字って何なんでしょうか? どう数字を数えても14個ありますよね? 数が12個のなら見たことがあるのですが…。 もしかしたら番号の頭が2なので打ち間違いかも…とも思っているのですが 違っていたら相手方にご迷惑かなとおもって質問させていただきました。 回答宜しくお願いいたします。

  • メールが文字化けしてしまう

    pwebcart http://www.phpweb.jp/pwebcart/ というフリーのPHPスクリプトを使用させていただいてます ショッピングカートです 今まで問題なく使わせていただいてたのですが このカートで注文し→注文内容の確認のメールが文字化けするようになってしまいました (半角のアルファベット・数字はOK 2バイト文字が化けてしまいます) とくに設定の変更もしていないのに途中からこのような現象が起きることあるんでしょうか?

    • ベストアンサー
    • PHP
  • auで受信した文字化けしたメール

    auで受信した文字化けしたメール auのW64Sでメールを受信したところ、件名と差出人が「???」と文字化けしてしまい見れませんでした。 メールはとあるイベントに応募した際の応募確認メールで、 From:??? Sub:????あいうえお????完了 本文:まったく文字化けなし といった感じで届きました。 差出人はクリックするときちんとアドレスは表示されます。送信元は恐らくパソコンだと思います。 件名は所々きちんと表示されているのですが、大半が?で文字化けです。 本文はまったく文字化けしておらず、最後まできちんと記載されており普通に読めました。 アドレスは送信専用なので、返信しても無駄で、本文内にあった問い合わせ先は平日のみ対応の電話番号となっており、再送をお願いできません。 どうやら件名に受付番号が記載されているらしく、その受付番号が当落の確認に必要なのです。 どうにかして文字化けした部分を確認する方法はありますか?

    • ベストアンサー
    • au
  • Chrome拡張機能の文字化け

    Chrome拡張機能の文字化けが発生してアンインストールしても文字化けが治らず困っています、Dark Readerという画面をダークモードにする拡張機能です、機能オフ機能がありそれも試しましたしアンインストールしても文字化けがあります(特に数字や記号が意味不明な文字になります) 銀行のHPなどの文字もメチャクチャになり治らないので解決策をご存じの方教えて下さい、どうかお願いします!

  • サンダーバードの文字化け

    サンダーバードのメーラーを利用して7年ほどになります。知人との送受信やいろいろな通販のお知らせ、注文、発送通知など全く問題は有りません。ただ毎月ドコモの通信利用料がe-リビングからメールで知らせてくるのですが、2019年7月以降タイトルや内容すべてが文字化けしており、何処を弄っても正常にならず、e-リビングでは1件もそういった事象は無く原因が分からず、結局こちらのPCの不具合で話は終わっています。ただ文字化けでも数字(利用料金)がスマホのマイドコモからの確定料金と合致しているので現在まで放っておきましたが、d-カードの関係で必要になり困っています。文字化けを直す方法が有りましたらお教え下さい。

  • UTF8メールがLotus Notesで文字化け

    次のようなUTF8メールを送付したところ、「文字化けなのか、件名を除き数字だらけで解読できない」という指摘を受けました。 同じ仕組みをここ3年間・のべ3000人くらいに対して運用してきて文字化けの指摘は初めて受けました。 相手のメールソフトは、以下です。 X-Mailer: Lotus Notes Release 8.0.1 HF660 September 15, 2008 Googleで調べてみると、Lotus NotesとUTF8はとても相性が悪いように見受けます。 http://www.google.co.jp/search?sourceid=navclient&aq=1h&oq=&hl=ja&ie=UTF-8&rlz=1T4GGHP_jaJP441JP441&q=lotus+notes++utf8+%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91 件名は文字化けしないというのが手がかりになりそうですが、何か適切な関数があるでしょうか? <?php $mailbody = "おはよう!\r\n"; $mailbody .= "こんにちは!\r\n"; $mailbody .= "こんばんは!\r\n"; $mailsbj = "ごあいさつ"; //メールで扱う言語をUTF-8に設定 mb_language('uni'); mb_internal_encoding("UTF-8"); $fromname = "差出人の氏名"; $fromname = mb_encode_mimeheader($fromname); $headers = "From: from@exampole.com"; $mailto = "to@exampole.com"; mb_send_mail($mailto, $mailsbj, $mailbody, $headers, $parameter); ?> 環境は以下の通りですが、サーバー管理者に頼めば設定は変更してもらえます。 Apache 2.2.18 PHP 5.3.6 MySQL 5.0.77

    • ベストアンサー
    • PHP
  • 払込通知票に記載されている数字

    払込通知票に記載されている数字 払込通知票に記載されている数字から、収納機関番号等はわからないでしょうか? 会社での支払処理なのですが、取引銀行のWEBサービスを利用して振込手続きを行っていて、ほとんど現金を扱っていない状況なので、できればWEBで処理したいと思っています。 これかな?と思う数字が『12345-6-789000』で、ハイフンを挟んで12桁の数字ですが…。 払込通知票の送り元へ問い合わせることまではするつもりはないのですが、もし、ご存知の方がいらっしゃればと思い、こちらで質問してみました。 よろしくお願いします。

  • 出会い系サイトの文字化け攻略法

    出会い系サイトでは番号やアドレスを知らせない為に数字やアルファベットを米印で隠してしまいます。その結果伝えたい文章まで文字化けされてしまいます。相手に名を言ってるのかわからない状況が出てきます。そこで聞きたいのですが、この文字化けを解決する方法はないものでしょうか?お金をかければ対処する方法があるようですが、現状での攻略法を教えてください。