• ベストアンサー

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

表題の件で質問させて下さい。 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で保存

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

  • ベストアンサー
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