• ベストアンサー

ブラウザに日本語出力

初めまして、PHP初心者です。 PHPで現在、日報を書き込むプログラムを作っています。 目的としては、書き込んだ日報をDBに登録させるというプログラムです。 その中で、HTMLのフォームで入力した日本語の文章や文字列をブラウザに出力させるにはどうしたら良いのでしょうか? 普通にprintで出力させると、文字化けをしてしまい困っております。 環境は、OSはLinux、PHPVer.3、DBはPostgreSQLです。 よろしくお願いいたします。

  • PHP
  • 回答数4
  • ありがとう数10

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

  • ベストアンサー
  • maro
  • ベストアンサー率47% (95/199)
回答No.3

PHP3はi18nの国際化バージョンでしょうか? 基本的にi18nでないPHPのときはEUCでないと文字化けすると思います。i18nでもconfigureのときに--enable-i18nを指定しないとi18nになりません。 i18nだとすると、ソースの文字コードは何でかいてありますか?php.iniの中で出力する文字コードを指定してやる必要があります。具体的には i18n.http_output = SJIS のように指定します。 または、ソースの中でprint(あるいはecho)で出力する前の部分で i18n_http_output(文字コード) で出力する文字コードを指定してやればそれ以降その文字コードで出力されます。

verine
質問者

お礼

お返事遅くなりまして、申し訳ありません。 只今、違う仕事が急に入ってしまい、お教えくださったこと試せていませんが、アドバイスありがとうございます。 時間が出来たら試してみたいと思います。

その他の回答 (3)

noname#687
noname#687
回答No.4

データを日本語EUCにしてDBへ登録し、 日本語EUCとして出力してみて下さい。 又、出力する際は、 header("Content-Type: text/html; charset=EUC-JP"); として文字コードを明示的に指定する方法もあります。 ※これらの方法では、ソースコード自身も日本語EUCに する必要があります。

verine
質問者

お礼

回答ありがとうございます。 一応、EUCの設定にはしています。 もう一度、よく見直してみます。 ありがとうございました。

  • otoko
  • ベストアンサー率0% (0/1)
回答No.2

HTMLまたはプログラムを書くときの文字コードがあっていないのでは? HTMLでのMETAタグで <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> を入れていますでしょうか? printのほかに<?php echo $NAME; ?>などの 方法もあります。

verine
質問者

お礼

回答ありがとうございます。 タグの中で文字コードの指定はしています。 EUC-JPにしようが、Shift-JISにしようが、文字化けは変わりませんでした。echoも試したのですが、ダメでした。

noname#9414
noname#9414
回答No.1

文字コードが違うとかそういうものではないでしょうか? 一度出力してきたページの文字コードを変更してみては どうなりますか? ではでは☆

verine
質問者

お礼

回答ありがとうございます。 出力したページの文字コードを変更しても文字化けは変わりませんでした。

関連するQ&A

  • ブラウザーで日本語が文字化けする(PHP+MySQL)

    以下の現象に対処したいのですが、どうすればいいか弱っています。 (1) phpMyAdminからSQLでテーブルに日本語を挿入して、 PHPプログラムでブラウザー表示すると文字化け(?????で表示)する。 phpMyAdminでこのデータを表示すると、正しく日本語表示されている。 (PHPプログラム内で直接日本語データを記述して挿入しても同じ現象となる) (2) ブラウザーで日本語を入力してPHPプログラムで受取りMySQLに出力して、 そのデータをPHPプログラムでブラウザー表示すると問題なく日本語が表示される。 phpMyAdminでこのデータを表示すると、文字化け(ぐじゃぐじゃの文字で表示)する。 利用しているホスティングサービスは、お名前・COMのVPSプラン 実行時の環境 MySQL: サーバのバージョン: 5.0.77 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) MySQL の接続照合順序: utf8_unicode_ci PHP : PHP5を使用 phpプログラムは、UTF-8で記述。 出力されるHTMLの文字セット <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

    • ベストアンサー
    • PHP
  • ブラウザが文字コードを誤判別する

    PHPでフォームを含むHTMLを出力しています。 POSTを使ってページ移動すると、ブラウザが文字コードを誤判別します。 表示が文字化するのではなく、ブラウザのエンコードが誤判別され、POSTで次ページに移動するとPOSTされる文字列だけが文字化けします。 リンクによる移動では、誤判別しません。 php.iniの設定 default_charset = Shift_JIS mbstring.internal_encoding = EUC-JP mbstring.http_output = Shift_JIS PHPのソースは、EUC-JPで書いています。 出力するHTMLには、 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/> をヘッダーに記述しています。 この現象は100%発生するわけではなく、完全にランダムです。 確実な再現手順はありません。 ブラウザは、WinXP Pro SP2 + IE6.0 です。 ブラウザの不具合でしょうか?

    • ベストアンサー
    • HTML
  • データベースから取り出した日本語が化けるのですが

    PHP初心者です。 データベースから取り出した日本語が化けるのでなにか直す方法は無いものかと悩んでおります。今のところアルファベット、数字は問題ありません。 構成はこんなかんじです。 Linux : Vine 2.5 PHP : PHP-4.2.1 DB : Postgresql-7.2 apache 1.3.26 現象: クライアントPCからwebでデータベースに日本語入力は出来ます。 データベースにターミナルから直接入り(psql [DB名])、(select * from [テーブル名];)で確認すると問題無く登録した通りに入っています。 クライアントPCからwebでデータベースの検索をして 拾い出したデータをクライアントPCのweb上で表示をすると文字化けし、 登録した文字とはほどとおいものが出て来ます。 "あ"と登録すると $$ などと出て来ます。 なにかいい方法がありましたら、教えて下さい。

    • 締切済み
    • PHP
  • ネット上の画像を検索してHTMLで表示する

    クライアントのブラウザに表示されているHTMLのフォームから検索文字列をPHPに渡し、検索文字列を元にPHP側でネットワーク上に有る画像を検索取得し、取得した画像をHTMLに組込み、そのHTMLをクライアントに送信するにはどのようにプログラムを組めばよいでしょうか?

    • ベストアンサー
    • PHP
  • 日本語だけ文字化け

    Solaris上で、Perl(5.005_03)を用い、DB(Oracle10.2.0)のデータを抽出しブラウザで表示させた際に、日本語のみが??????という感じに、半角の"?"で表示されてしまいます。 Solaris上で、cgiファイルを標準出力したり、Perlのデバッガで表示させると問題なく日本語表示されます。また、ブラウザでもDBから抽出した文字以外の日本語は問題なく表示されます。加えて、OUT関数を用いても、やはりDBから抽出した値のみ?表記になってしまいます。 下記に利用したCGIを書き出してみます。(DB接続以降の記述のみ) ------------------ここから--------------------- my $dbh = DBI->connect($datasrc, $username, $password) || die DBI::errstr; my $sql = "SELECT AAA FROM XXXXX"; my $sth = $dbh->prepare($sql) || die $dbh->errstr; $sth->execute || die $dbh->errstr; print "Content-type: text/html\n\n"; print "<HTML>\n<HEAD>\n"; print "<TITLE>DBテスト</TITLE>\n"; print "<meta http-equiv=Content-Type content=text/html; charset=Shift_JIS>\n"; print "</HEAD>\n<BODY>\n"; print "DB接続テスト<P>\n"; # display results my @results; my $count; while($count < 2) { @results = $sth->fetchrow; print "あああ"; print "@results\n<P>"; print ,$count++,"行目\n"; } $sth->finish; $dbh->disconnect; print "\n</BODY>\n</HTML>\n"; ------------------ここまで--------------------- ブラウザ表示の結果は、 DB接続テスト ???????? ???????? となってしまいます。"DB接続テスト"は正常に表示されて、print "@results\n<P>";が????に置換わり、"行目\n"が非出力となってしまいます。DB(AAA列)の値が数字や英数は問題なくブラウザ表示されます。 日本語全てが一律文字が置き換わるのであれば、文字コードの問題だと疑うのですが、SELECT文の日本語のみが、?というのはどうしてなのかがわかりません。また、Solaris上でのデバッガーや標準出力は問題なく、ブラウザやOUT関数でファイルに書き出すと、?になるのもわかりません。 もし、ご存知の方がいらっしゃいましたら、教えてくださいm(_ _)m

  • ラテン語?について

    UTF-8で書かれているXMLファイルからPostgreSQLにデータをインサートするPHPのプログラムを作っています。 一点だけうまく行かないことがあり・・・XMLファイルに記載されている文字列にラテン語(?)が含まれています。 uの上にカンマみたいなやつや、eの上にドットが2つとかあるやつです。 PostgreSQLの文字コードがEUC_JPなので、文字化けしてしまいます。 なので、ラテン語は全て通常のローマ字に変換して登録しようとしていますが、うまく行きません。 流れ的には、 (1)UTF-8で記載されたXMLファイルをfopen (2)ラテン語があれば通常のローマ字に変換する (3)DBにインサートする といった流れです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • printfでの出力を監視

    Linuxでのプログラムについて質問です。 言語はCを使っています。 あるランダムでprintfにて文字列が出力されるというプログラムがあり、このプログラムに対してバックグラウンドにて監視し、特定の文字列が出力された場合それに対する動作を行うとういことはできるのでしょうか? 動作としては、 バックグラウンドにて監視プログラム起動 ↓ 文字列出力プログラム起動 ↓ 監視プログラムが特定の文字列を検出 ↓ それに対応する動作(別のプログラム起動等)を行う ということをさせたいと考えています。 よろしくお願いします。

  • LuaJITで日本語出力

    LuaJITを学んでいます。 そこで質問なのですが、print"ソーステスト"などとうつと、文字化けしてしまいます。 Luaですと、sjisに対応パッチが出ていますが、LuaJITでは日本語出力は不可能なのでしょうか。 ご教授頂ければ幸いです。

  • 半角のアポストロフィ(’)の表示について

    PHPのプログラムの中で半角のアポストロフィの入った文字列をDBに挿入し、その文字列をとりだしたものをHTMLで表示しています。 その時、DBでとりだした直後はアポストロフィの文字はうまく表示されているのですが、 HTMLにはきだすときに、 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' となってしまいます。。。 何かよい方法はありませんか?

    • 締切済み
    • PHP
  • 日本語表示する方法について

    LAPP環境下での開発を行っていますがまだまだ初心者でなかなか前に進みません。 →PostgreSQL (8.3.4) PHP (5.2.6) 現在、作成したプログラムを確認する際にWebブラウザで確認しているのですが DBから引っ張ってくるデータが文字化けしてその解決策が判らず困っています。EUC→Shift_JISがうまくいきません。 DB側の問題なのか、プログラム側の問題なのかも判断つきません。 <php.ini> php.iniは以下の設定を変更しました。 magic_quotes_gpc=off output_bufferring=on output_handler=mb_output_handler default_charset=Shift_JIS mbstring.language = japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none <HTML> HTMLは関係するのはheadタグのみかと思い以下のように設定しています。 charset=Shift_JISと設定しています。 以上方法論等どなたかご教授頂けないでしょうか。

    • 締切済み
    • PHP

専門家に質問してみよう