• ベストアンサー

「塙」と言う文字が文字化けしてしまう

表題の件で質問させて下さい。 PHPで文字コードをEUCにしたwebアプリケーションを構築しております。 特に何の問題もなく動いていたと思っていたのですが、フォーム等で「塙」と言う文字を入力して、submitした値を表示させると文字化けしてしまいます。 これを表示させるには、どのような対処を行えば良いのでしょうか? いろいろと試してみた結果、 「塙あ」のように、後ろに全角文字が入るとキチンと文字化けせずに表示されるのは確認しました。 (「塙1」のように後ろに半角文字があると「?1」になってしまいます) どなたか対策をご存知の方、いらっしゃいましたらご教授お願いします。 下記の対策は行っています。 ・header("Content-type: text/html; charset=EUC-JP"); ・<meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> ・ファイルをEUC-JPで保存

  • u_713
  • お礼率82% (19/23)
  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
noname#87667
noname#87667
回答No.1

この文字化けは、確かJISコードでぶつかるため発生するものだったような気がします。「PHP 文字化け EUC」で検索してみてください。参考までに検索結果の最初に出てきたサイトのURLを書いておきます。

参考URL:
http://park1.wakwak.com/~ima/php_tips0001.html
u_713
質問者

お礼

ご回答ありがとうございます。 「PHP 文字化け EUC」につけ加え、「JISコード」で検索してみたところ、下記記事を見つける事が出来ました。 http://www.lockon.co.jp/blog/php/eucjp.html こちらに記載されている「美乳」と言う文字をhiddenに埋め込んで送信してみたところ、文字化けが解消されました。 アドバイスありがとうございます!

その他の回答 (1)

  • kinta03
  • ベストアンサー率41% (7/17)
回答No.2

始めまして 私も文字化けで苦労しましたので参考になれば・・・ まずは「.htaccess」サンプルです。   php_value mbstring.http_input "EUC-JP"   php_value mbstring.internal_encoding "EUC-JP"   php_value mbstring.http_output "EUC-JP"   php_value mbstring.substitute_character "long" 又は、phpでサンプル・コードの「<?php」の次行に   mb_http_input("EUC-JP");   mb_internal_encoding("EUC-JP");   mb_http_output("EUC-JP");   mb_substitute_character("long"); と記述してください。 次にサンプル・コードです。 ---------------------------------------------------------- <?php header("Content-type: text/html; charset=EUC-JP"); $main = basename( $_SERVER['PHP_SELF'] ); $F_Text = ''; $F_Code = ''; if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) { if ( isset( $_GET['F_Text'] ) ) $F_Text = $_GET['F_Text']; for( $ii = 0 ; $ii < strlen( $F_Text ) ; $ii++ ) { $Char_Code = dechex( ord( substr( $F_Text , $ii , 1 ) ) ); if ( $ii == 0 ) { $F_Code = '['.strlen( $F_Text ).','.mb_strlen( $F_Text ).']='.$Char_Code; } else { $F_Code .= ',' . $Char_Code; } } } ?> <html> <head></head> <BODY> <form action="<?php echo $main ?>" method="get" name="Form1"> Text<br> <input name="F_Text" type="text" value="<?php echo $F_Text ?>" size="20"><br> Code<br> <?php echo $F_Code ?><br> <input type="submit" value="submit"><br> </form> </BODY> </html> ---------------------------------------------------------- これを実行してみてください。 文字化けを起こしますか? 起こす場合は   http_input   internal_encoding   http_output を、「EUC-JP」から「eucJP-win」などに変えて実験してみてください。 何らかの参考になれば幸いです。 オブザーバの皆さん、突っ込み宜しくお願いします。

u_713
質問者

お礼

サンプルコードまで作って頂き、ありがとうございます。 eucJP-winにしても、文字化けは直りませんでした・・・。 ですが、こうやっていろいろ実験してみる事が大切なのだと、とても勉強になりました。 ありがとうございます。

関連するQ&A

  • 更新を繰り返すと文字化けが起きてしまいます...

    お世話になります PHP4でHPを作成しています 文字化けに関して質問させて下さい PHPで作成したページの更新をすると 5回に1回の割合で文字化けが発生してしまいます EUC-JPで作成したPHPファイルを表示するので ファイルの先頭に  <? header(\"Content-Type: text/html;charset=EUC-JP\"); ?>  <html lang=\"ja\">  <head>  <meta http-equiv=\"content-type\" content=\"text/html; charset=EUC-JP\">  <meta http-equiv=\"content-style-type\" content=\"text/css\">  <meta http-equiv=\"content-script-type\" content=\"text/javascript\"> と指定してから 他の処理が実行されるようにしているのですが…。 何回か更新を繰り返すと文字化けを起こしてしまいます。 文字化けを起こした時にソースを表示すると 日本語が正しく見れる状態になっていたので シフトJISになってしまっているようで… 宜しくお願いします

    • 締切済み
    • PHP
  • HTML・PHPの文字化け

    こんにちは。 PHPとMySQLを使ってショッピングカートを作ろうと思ったのですが、しょっぱなから躓いてしまいました・・・。 index.htmlでメタを <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> とeuc-jpにしたのですが、サーバーにアップすると文字化けしてしまいます。 表示のエンコードで確認するとシフトーJisになっています。eucにするとちゃんと表示されるのですが、更新するとやはり文字化けします。PHP・MySQLがeucですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

    • ベストアンサー
    • HTML
  • 携帯用HPの文字化け。。

    携帯用のウェブサイトを作成しています。 手持ちのi-mode/FOMAでプレビューすると正常に表示されるのですが EZ-webでプレビュー(openwave sdk 6.2K使用)すると、全体的に文字化けしてしまいます。 文字コードが関係している事が分かり、HTML内のメタ情報をEUC-JPからShift_JISへ書き直しました。 すると何故か今度はFOMAで文字化けし、EZ-webで正常表示という結果になり、四苦八苦しております(;´Д`) 修正前は以下の通りです。 <?php declare(encoding="EUC-JP"); header('Content-Type: text/html; charset= EUC-JP'); session_start(); $sid = session_id(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP">   ・   ・   ・ テスト時に修正したのは、<META~~ charset=EUC-JP">のEUC-JP部分です。 PHPには内部処理のみをさせているので、修正を加えませんでした。 ( header('Content-Type: text/html; charset= EUC-JP'); の部分です) i-modeとez-webの両方で文字化けさせない為には、どの様な修正をすれば良いのでしょうか。 ご存知の方、お教え下さい。どうぞ宜しくお願いします。m(__)m

    • ベストアンサー
    • HTML
  • 文字化けについて

    ホームページの文字が化けてしまいます。 特に、一番上のタイトル部分が化けます。 <meta http-equiv="Content-Type" Content="text/html; charset=euc-jp"> をいれても化けます。何が原因なんでしょうか?

  • 文字コード変更による、文字化け・レイアウト崩れ

    文字コードをShift-jisからEUC-JPに変更したいのですが、 HTML・CSSに処理を施したら文字・レイアウトが大幅に崩れてしまいました。 以下のように変更したのですがやり方に間違いはないでしょうか? [HTML] <meta http-equiv="Content-Type" content="text/html; charset=Shift-jis"> ↓↓ <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> [CSS] @charset "shift_jis"; ↓↓ @charset "euc-jp"; また、ブラウザの表示⇒エンコードで(Shift_jis)を選択すると今までどおり正常に表示されます。(HTMLとCSSにはeuc-jpの記述にも関わらずです) これは文字コード変更したと思い込んでしまっているのでしょうか? 解決策お願いします。 あまり知識がありませんので、分かり易く教えていただけるとありがたいです。 ちなみにエディタはHTML Project2を使用しています。

  • ジオシティーズで作るのならeuc-jp?

    yahooジオシティーズでHPを作る際は、絶対に <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> ってやらないとうまくひょうじできないのでしょうか? <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> をしないでIEで表示しようとすると文字化けしてしまいます。

    • ベストアンサー
    • HTML
  • HTMLのソースの文字化けを防ぐ方法

    Win2000とIE6.0の環境であるサイトを開き →エンコード→「自動選択」、もしくは  「日本語(EUC)」 →ソースの表示 とやっても文字化けします。 文字化けしないようにソースを開きたいです。 この問題について対処法が分かる方がおりましたら、お返事頂ければ嬉しいです。 ちなみに、開いたソースの <META http-equiv=Content-Type content="text/html; charset=EUC-JP"> は読み取れます。

    • ベストアンサー
    • HTML
  • 文字化けについて

    お世話になっております。 文字化けに関して対策方法が分からず困っております。 というのも、当方で作成したスクリプト(EUCで記述し、開発環境のmbstring.http_outputもEUC)があるのですが、このスクリプトを知人が借りているレンタルサーバーにアップさせると、文字化けしてしまう現象が起きています。(他のサーバーにもアップしてテストしているが文字化けは初めて) このスクリプト、全て単体で動かすためのものですが、html部の <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> これくらいしか、文字コードの指定はしていませんが、これだけでは不足なのでしょうか? 以上、些か漠然とした質問ではありますが、今回の文字化けする原因など、考えられる要因など御座いましたらどんな些細なことでも結構です。アドバイスのほど頂戴出来れば幸いです。宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • htmlが文字化け

    掲題の件について質問させて頂きます。 linuxサーバ(CentOs5)を立ち上げて、apacheをインストールし、DocRootにhtmlファイルをFFFTPにてアップロードした所、文字化けが発生してしまいました。(画面が真っ白になります) 【環境】 Server: Apache/2.2.6 (Unix) mod_ssl/2.2.6 or_log PHP/5.1.6 【アップロードしたファイル内容】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>ここにタイトルを挿入</title> </head> <body> <form method="post" action="input_check.php" name="input_check"> <input type"text" name="name">お名前: <input type"text" name="furigana">ふりがな: <input type="submit" name="send" value="submit"> </form> </body> </html> ファイルはEUC-JPにて記述しています。 以下試した点をあげてみます。 1. charsetをShift_JISに変更。 ⇒ファイルがEUC_JPで書かれているので当然文字化け。ですが文字化けされた文字は表示されました。(画面が真っ白ではないです。) 2. apacheのhttpd.confのAddDefaultCharsetをコメントアウト ⇒(というよりデフォルトで設定されていませんでした。) 他に何か怪しまれる点はありますでしょうか? 以上宜しくお願い致します。

  • 文字化けを解決したい

    サイトを持つ管理人です。タグなどについてはかなり初心者です。 iPhoneなどの海外OSから閲覧すると文字化けしてしまうという報告を受けて、タグを色々いじっています。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を追加してみたのですが、これ単品だと私のPCから閲覧したときに文字化けしてしまいました。 そのため<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">と<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を並べてみたのですが、これで海外OSからも文字化けを起こさなくなったのでしょうか? こんな感じのタグです↓ <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META NAME="GOOGLEBOT" CONTENT="NOINDEX, NOFOLLOW,NOARCHIVE"> <META NAME="ROBOTS" CONTENT="NOARCHIVE,NOINDEX,NOFOLLOW"> <meta name="viewport" content="width=380, maximum-scale=1.6" /> <title>練習</title> </head> 全てのスマホからもサイトを閲覧出来るようにするにはどうしたら良いでしょうか?それとも、全てのスマホから文字化けを防ぐことは不可能なのでしょうか? お知恵をお貸しください。