• 締切済み

PHP3の文字化け

PHP3について質問です。 php4でprint "<td>$value</td>\n";するとうまく表示されるのですが、php-3.0.18-i18n-ja-3だと文字化けしてしまいます。"輔"や"子"などです。解決策を探しています。お願いします。

  • PHP
  • 回答数2
  • ありがとう数2

みんなの回答

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

多分テキストの文字コードとPHPの文字コードがあってないように思えます。 そこだけ文字化けする場合は \ でエスケープしてみたらどうなりますでしょうか? 総\輔 とか。 マルチバイト関数は PHP3で使えないような気がしたんですが、気のせいでしょうか? 使えるんでしたら、文字コードを合わせてみてください。

ataunagi
質問者

お礼

2度のアドバイスありがとうございました。 結論としてはPHP3は日本語がうまくつかえないんだと思う事にしました。 4に変わる予定があるのでそれまでは力技でいこうとおもいます。どうもでした。

ataunagi
質問者

補足

"\"をいれると"\・/td>"となりました。 マルチバイト関数は3では使えないみたいです。 phpとずれるかもしれませんが、秀丸のデフォルトをEUCにしてあって、そこにshift_jisのテキストをコピペしたのですが、そんなやりかたでは文字コード変換できないのでしょうか?php4だとマルチバイト関数つかわずとも何事もなく表示されるので違うと思っていたのですが。 テキストの文字列の最初と最後にコメント<!---->付け足すときちんと表示されると言う事はやっぱり文字コードですよね・・。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

print "<td>" .$value ."</td>\n"; としたらどうなります?

ataunagi
質問者

お礼

文字化けする文字と言うのは"輔"等なのですが、試してみたところ"輔"の部分は"・"になりました。教えていただいた方法の前の文字化けの仕方は、"輔"だと"・/td>" "内田"だと"眦・"なりました。 $valueの値は、txtを読み込んだ値なのですが、回避策として読み込む前のtxtの時点で文字化けする文字の前後に"<!---->"コメントをいれています。 文字コードの変換がうまく行ってないのでしょうか?もともとshift_jisのtxtを秀丸でeucにしています。phpもeucです。 よろしくおねがいします。

関連するQ&A

  • phpで読み込んだcsvが文字化けします

    PHPでCSVよ読み込んで名簿を作っています。 出力まではうまくいったのですが、なぜか一字だけ文字化けしてしまいます。(「務」→「冶」になってしまいます) 普段あまりプログラムはしないので、原因がわからず困りはてております。よろしくお願いいたします。 PHP部分の記述は以下になります。 ――――――――――――――――――――――――――――――――――― <?php $fname = "csv/meibo.csv"; $file = fopen($fname, "r"); $nowrap = "nowrap=\"nowrap\""; $tcent = "class=\"center\""; $tbg = "class=\"even\""; while (list($name, $post, $add, $add2, $tel, $http, $url, $mail) = fgetcsv($file, 1000, ",")){ $name = strtr($name, "﨑", "崎"); $add2 = strtr($add2, "﨑", "崎"); $tline ++; if($tline % 2 == 0){ echo "<tr $tbg>\n"; }else{ echo "<tr>\n"; } echo "<td $nowrap>$name</td>\n"; echo "<td $tcent>$post</td>\n"; echo "<td>$add<br />$add2</td>\n"; echo "<td $tcent>$tel</td>\n"; if($http == "http://"){ echo "<td $tcent><a href=\"$http$url\" target=\"_blank\"><img src=\"img/common/img_hp.gif\" alt=\"HPへ\" width=\"16\" height=\"16\" /></a></td>\n"; } else { echo "<td $tcent>&nbsp;</td>\n"; } echo "<td>$mail</td>\n"; echo "</tr>\n"; } fclose($file); ?> ――――――――――――――――――――――――――――――――――― PHP4を利用。 .phpのcharsetはShift_JISで、同じくShift_JISで保存しています。 CSVファイルはエクセルで作りShift_JISで書き出しています。

    • ベストアンサー
    • PHP
  • php文字化けについての質問

    <TABLE BORDER> 99表 <tr> <th> </th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th> </tr> <tr> <?php for ($i = 1; $i <= 9; $i++ ) { echo "<tr>\n"; echo '<th>'. $i ."</th>\n"; for ($j = 1; $j <= 9; $j++ ) echo '<td>'. $i * $j."</td>\n"; echo "</tr>\n"; } ?> </table> 表と言う文字が文字化けして???と表示されます phpの設定も何度も見直しているのですが 問題がが発見できません どなたかお教えください

    • ベストアンサー
    • PHP
  • php言語にて

    <?php print "<form><table border=\"1\" cellpadding=\"5\">\n"; for($i=0;$i<6;$i++){ if($i==0){print "<tr><td>&nbsp;</td><th>月曜日</th><th>火曜日</th><th>水曜日</th><th>木曜日</th><th>金曜日</th></tr>\n"; continue; } print "<tr><td align=\"center\">$i<br>限</td>"; for($j=1;$j<6;$j++){ print "<td><select name=\"kamoku$j$i\"><option value=\"\"> <option value=\"科目A\">科目 A<option value=\"科目B\">科目 B<option value=\"科目C\">科目 C<option value=\"科目D\">科目 D<option value=\"科目E\">科目 E<option value=\"科目F\">科目 F<option value=\"未定\">未定 </select> </td>"; } print "</tr>\n"; } print "</table>\n</form>"; ?> これにボタンを付けて、ボタンを押したら操作をできなくするにはどうすればいいですか? 保存のような機能を付けたいのですが… なにか参考になるサイトはありませんか?

    • 締切済み
    • PHP
  • phpのリンクについて

    <?php print "<form><table border=\"1\" cellpadding=\"5\">\n"; for($i=0;$i<6;$i++){ if($i==0){print "<tr><td>&nbsp;</td><th>月曜日</th><th>火曜日</th><th>水曜日</th><th>木曜日</th><th>金曜日</th></tr>\n"; continue; } print "<tr><td align=\"center\">$i<br>限</td>"; for($j=1;$j<6;$j++){ print "<td><select name=\"kamoku$j$i\"><option value=\"\"> <option value=\"科目A\">科目 A<option value=\"科目B\">科目 B<option value=\"科目C\">科目 C<option value=\"科目D\">科目 D<option value=\"科目E\">科目 E<option value=\"科目F\">科目 F<option value=\"未定\">未定 </select> </td>"; } print "</tr>\n"; } print "</table>\n</form>"; ?> (1)プルダウンではなく、リンクを表の中に入れる。 (2)リンク先に教科がいくつかあって、その中から教科を選択する (3)その選択した教科を表に反映させる。 上記のようなことをしたいんですけど、どうすればいいかわかりません。 どうかよろしくお願いします。

    • 締切済み
    • PHP
  • 文字化けを直すには

    現在、文字列で名前を検索してデータファイルを 開いてその名前のデータを表示するというのを作っているのですが、 名前が文字化けしてしまい困っています。 名前はスカラー変数に入ってて、    print "<tr><td>$name</td></tr>"; こんな感じで表示しているんですけど、 $nameに特定の文字がはいっていると    特性の文字・td></tr> このように文字化けみたいなことがおきてしまいます。 どうすれば回避できるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • エクリプスでPHPを書き込んで文字化けします

    エクリプスを利用してPHPを書き込んでいます。 しかしながら動作がおかしいです。 <?php print "あいうえお"; ?> と打ち込んで保存したらエクリプスのPHPブラウザが起動して以下のように表示します。 ?????? と・・・文字化けだと思うのですが原因が分かりません。 どのようにしたら解決できますでしょうか。

    • ベストアンサー
    • PHP
  • OSから返ってきた文字が文字化けしてしまう

    OS:Linux9 PHP Version 4.3.10です。 exec("whois -h whois.jprs.jp $host,$output); print implode($output,"<br>"); とすると文字化けしてしまいます。 まず確認したのが ファイル名:/etc/sysconfig/i18n ------------------------------ #LANG="C" LANG="ja_JP.eucJP" #SUPPORTED="C:C:C" SUPPORTED="ja_JP.eucJP:ja_JP:ja" SYSFONT="lat0-sun16" SYSFONTACM="8859-15" ------------------------------ ■スクリプトファイルの文字コード EUC-JP(エディタで確認しました) ■ブラウザで実行した場合の文字コード EUC-JP(<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">を挿入) ■$outputの文字コード print mb_detect_encoding($output[$i]); (配列全て調べましたが、UTF-8でした) ■苦肉の策 ファイルの文字コード、表示エンコードをUTF-8にしても同じく文字化けしてしまいます。 どなたか同じような経験をされた方、情報いただけないでしょうか?

    • 締切済み
    • PHP
  • PHPとMySQLの文字化けの対応法は?

    OSはWinXPで、MySQL+PHPのアプリを作成しているところです。 <html> <head><title>配列データの取得</title></head> <body> <table border="1"> <tr><td>題名</td><td>著者</td><td>出版社</td></tr> <?php $host = "localhost"; if (!$conn = mysql_connect($host, "user", "pass")){ die("MySQL接続エラー.<br />"); } mysql_select_db("kisop", $conn); $sql = "SELECT * FROM book_table LIMIT 10"; $res = mysql_query($sql,$conn); while($row = mysql_fetch_array($res)) { print("<tr>"); print("<td>".$row["btitle"]."</td>"); print("<td>".$row["bauth"]."</td>"); print("<td>".$row["bpub"]."</td>"); print("</tr>\n"); } mysql_free_result($res); ?> </table> </body> </html> と、こんな演習をしているのですが、ブラウザに表示させると文字化けしました。 HTML文はEUC、MySQLのデータは、シフトJISで入っていたようです。 そのため、「題名」「著者」などの見出しと、取り出したデータを同時に文字化けさせずに、表示できない 状態です(泣)。 MySQLからデータを取り出すときに、mb_convert_encodingで文字コードを変換してやれば 化けないでしょうが、出力しようとするデータのすべてを変換しなければなりません。 プログラマーさんたちは、文字化けの現象について、どう対応されているのでしょうか? いちいち、mb_convert_encodingで、変換しているものなのでしょうか? 定石のようなものを知りたいところです。 たとえば、HTML文は文字コード○○を使うものだ、設定ファイルを書き換えておく、などなど。 よろしくおねがいします。

    • ベストアンサー
    • PHP
  • php4での文字化け

    php4で以下のプログラムを実行したら、IEの設定で文字コードをどれにしても文字化けします。 文字化けしない方法はあるのでしょうか? よろしくお願いします。 <?php $str = "あいうえお"; $str = mb_convert_kana($str,"KV"); echo "$str\n"; ?>

    • ベストアンサー
    • PHP
  • PHP

    PHPで <?php for($i = 0; $i <= 23; $i++){ // $nhour が $i と等しいなら selected を宣言 等しくなければ空文字 $isSelected = $nhour == $i ? 'selected' : ''; echo "<option value=\"$i\" $isSelected>$i</option>" . "\n"; } ?> を含むにしたい <?php for($i = 0; $i <= 23; $i++){ // $nhour が $i と等しいなら selected を宣言 等しくなければ空文字 $isSelected = strstr($nhour,$i) ? 'selected' : ''; echo "<option value=\"$i\" $isSelected>$i</option>" . "\n"; } ?> こうするとエラーになる。どうしたらいいですか?

    • ベストアンサー
    • PHP

専門家に質問してみよう