半角カナの抽出と更新で文字化けが発生する問題について

このQ&Aのポイント
  • DBより半角カナの抽出は出来たのですが更新をした場合に文字化けになります。全角にしたらいいと言うご意見もあるかと思いますが、全角にすると別なプログラムも狂ってしまうので半角でしかダメみたいです。
  • ピーナッツという半角カナのカテゴリがあり、そこにある情報を取得し更新していますが、更新後の内容が文字化けしてしまいます。フォームのプルダウンメニューからカテゴリを選択し、インサートおよび更新をしていますが、抽出時点では半角カナで表示されていて、更新作業をすると文字化けが発生します。
  • 現在のデータベースはEUC-JP、PHPファイルはSJISとなっており、文字化けの原因ではないかと考えられます。文字化けが発生した場合、管理画面からカテゴリの訂正をしなければならない状況です。
回答を見る
  • ベストアンサー

半角カナに悩まされております・・・。

こんばんは! 度々質問させて頂いておりますイインンフォフォと申します。 さて早速質問に移ります。 DBより半角カナの抽出は出来たのですが更新をした場合に文字化けになります。 ピーナッツと言う半角カナのカテゴリがありそこにある情報を取得→更新と言う形です。 全角にしたらいいと言うご意見もあるかと思います。 全角にすると別なプログラムも狂ってしまうので半角でしかダメみたいです。 ピーナッツを抽出→表示 はOKです。 でも内容を更新すると→[ピーナッツ]が文字化けです。 フォームのプルダウンメニューから cate='$pr[4]' と言う形でインサート及び更新をしています。 抽出の時点では半角カナで表示されていて更新作業をすると化けてしまいます。 文字化けした場合、管理画面からカテゴリの訂正をしなければなりません。 DB→EUC-JP PHPファイル→SJIS となっております。 なぜでしょうか!! ご教授願います(*^-^*)

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

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

  • ベストアンサー
  • tom951
  • ベストアンサー率30% (29/96)
回答No.1

>なぜでしょうか!! そりゃ質問者自身が回答だしています。 それは >DB→EUC-JP >PHPファイル→SJIS となっております。 特別にPHP側やDB側からデータを受けるときなどで意図して文字コード変換の処理を付けてなければ文字化けするよね。

関連するQ&A

  • Jcode.pmでの半角カナ→全角カナ変換

    Webフォームから取得したデータに半角カナが含まれていた場合の文字化け対策として、Jcode.pmを使用して、下記のようにEUCに変換しています。 use Jcode; $euc_string = jcode($form_input)->h2z->euc; 原理的には間違ってはいない筈ですが、ほとんどの場合、$form_inputの文字コードの判別に失敗(恐らく半角カナをEUCと誤認)し、文字化けしてしまいます。誤認しないように、下記の様に記述すれば、正しく全角カナに変換してくれます。 use Jcode; $euc_string = jcode($form_input,"sjis")->h2z->euc; ただ、入力コードがシフトJISとは限りませんので、この記述は好ましくないと思っています。 半角カナの文字化けは、webフォームを作られた方なら皆さん経験されていると思うのですが、どうされているのでしょうか? Jcode.pmの文字コード判別は、半角カナが混じっていた場合、かなり長い文字列でないと判別に失敗するようなので、フォームで短い文字列(名前等)を入力させて処理させた場合、ほとんど上手く動かないようなのですが?

    • ベストアンサー
    • Perl
  • eval 半角カナが文字化けする

    初めて投稿させていただきます。 半角カナが混ざっている文字列をevalすると、文字化けする場合があります。 どうすれば文字化けしないようになりますか? ちなみに全ての半角カナを全角カナに置換してevalを行いその後、半角カナに戻すということをやったのですが、もともと全角カナ文字まで半角カナに変換されてしまいました。できれば全角カナは全角カナ、半角カナは半角カナのまま文字化けせずにevalする方法を教えてください。

    • 締切済み
    • PHP
  • 半角カナから全角カナへ

    お世話になります。 今、フォームから入力された半角カナを全角カナへ変換しようとしているのですが、どうしてもうまく行きません。 処理は以下のようにしています。 jcode::convert(\$str, 'euc'); if($str =~ /[\xA1-\xDF]/){ jcode::h2z_euc(\$str); } (1)まず、半角カナが含まれているかのチェックで[\xA1-\xDF]を使用していますが色々調べたところ、実際は (?:\x8E[\xA6-\xDF]) が正しいようなのですが、この場合文字数が少ないとひっかかってくれません。例えば半角のア1文字や2文字など。また、文字数が多くても半角英数と半角カナが混在しているとひっかからない場合もあります。 上記の式だとひっかかってくれますが、この判定で構わないのでしょうか。 (2)上記の式できちんと置換されるものとされないで漢字のように文字化けするものと出てきてしまいます。 例えば「インターフェース」などという半角は全滅です。 「バージョン」などは大丈夫でした。 間違いなど教えて頂ければと思います。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 半角カナ文字と特殊文字の変換

    半角カナ文字と「丸で囲まれた1」や「はしご高」等の特殊文字を SJISからJISへ、JISからSJISへ変換する方法を調べています。 半角カナはJISにないという記述も見たのですが、 サクラエディタで双方へ変換できるのと、 Outlookへ半角カナで送信したところ文字化けせず(全角になっていましたが) 受信できたこと、「はしご高」は受送信で文字変換されているようなので、 何か方法があるのではないかと調べています。 方法や参考資料を教えていただければと思います。 よろしくお願いいたします。

  • 半角カナの使用について

    以前はメールやホームページで半角カナを使うと文字化けしたりしましたが、今は使われることが多くなっているように思えます。 実際のところどうなんでしょう。 自分に半角カナを入れたメールを送ると全角カナに変換されています。 ローカルディスクに半角カナをいれたHTMLファイルを作り、ブラウザで見るとそのまま半角カナで表示されます。 まだ使うと不具合が出たりするんでしょうか。 それとも使えるようになったんでしょうか。

  • インターネット上では半角カナは使うなと指摘されたのですが

    こことは違う所で、「半角カナはインターネット上では使用しない様にしましょう。 システムによっては文字化けの原因となる場合があります」と指摘されたのですが、全角カナにするにはどうすれば良いでしょうか? それと、半角のひらがなも文字化けするのでしょうか

  • Javaで、半角カナを2バイトとしてカウントしたい

    JavaでSJISで入力された文字列(全角、半角、英字、記号等混在)の桁数チェックで、 入力された半角カナのバイト数を、2バイトとみなしてカウントしたいと考えています。 例えば  全角の"テスト"の場合、バイト数は6  半角の"テスト"の場合も、バイト数は6 Javaで以下の様にコーディングしたところ、半角カナ部分はとりあえずうまく行ったのですが、 System.out.println 半角の"テスト".getBytes("EUC-JP").length; ->6 特殊な文字「まるの1、まるの2」等で試すと、特殊な文字のバイト数が1バイトとして カウントされてしまいます。 ※まるの1、まるの2は、この質問フォームで入力できないのでこの記載としています。 以降は(1),(2)と記載します。いずれも全角1文字の文字のことです。 System.out.println "(1)".getBytes("EUC-JP").length;   ->1      ※希望結果は2バイト System.out.println "(2)スト".getBytes("EUC-JP").length;   ->5      ※希望結果は6バイト 特殊な文字「(1)、(2)」や半角カナ(2バイトとしてカウント)を含めて、 簡単にバイト数をカウントすることはできないでしょうか。

  • 半角カナ「ヲ」の文字コードはなぜ…

    「技術者向けコンピュータ」には素人の私ですが、掲題の件は此処が適当と勝手に判断して質問いたします。最適なカテゴリーがあれば教えてください。 平仮名も全角カナも概ね五十音順に文字コードが割り当てられています。 だから、コード昇順だと「ぁあぃいぅう・・・わゐゑをん」「ァアィイゥウ・・・ワヰヱヲン」と並びます。 ところが、半角カナの「ヲ」は他のどの半角カナよりも若い文字コードが割り当てられていることに、最近になって気付きました。 調べてみると、半角カナは文字コード昇順で「ヲァィゥェォャュョッ-アイウ・・・ワン」(此処では便宜上 全角カナで示しましたが、すべて半角カナとご理解ください。半角カナの「ヰ」「ヱ」は存在しない)と並びます。つまり、「ヲ」は「ワ」と「ン」の間に来ない! 半角「ヲ」に他のどの半角カナよりも若い文字コードが割り当てられた経緯をご存知の方がいらっしゃいましたら、その理由を教えてください。

  • 半角カナ

    パソコンで書き込みする時は半角カナは使わないよう方がいいと知ったのですが 携帯から携帯へ(他キャリアでも)メールを送るときも半角カナは使用しない方がいいですか? 文字化けしたりするのでしょうか?

  • 置換の順番について

    置換する目的は 半角カナを全角カナにする事なのですが、そこで問題が生まれました。 sjisに変換した後に、置換をすると文字化けになり、反対にする事によって正常に置換する様になっています。良くそこの仕組みが分からないのですがどうか教えて頂けないでしょうか?宜しくお願いします。 ###参照プログラム### ★#半角文字を全角文字に置換するケース &jcode::h2z_sjis(\$value); &jcode::convert(*value, 'sjis'); ★#文字化けを起こすケース &jcode::convert(\$value, 'sjis'); &jcode::convert(\$str, 'euc'); print "str : $str<br>\n";

専門家に質問してみよう