データベースへの日本語入力の方法とは?

このQ&Aのポイント
  • PHPとMySqlを勉強し始めた初心者が、データベースへの日本語入力につまずいています。
  • 半角英数字は問題なく読み書きできるが、日本語の文字は空白になってしまう現象が発生しています。
  • 試した対策として、HTMLの<HEAD></HEAD>に<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">を追加したり、mysql_query("SET NAMES 'utf8'");を実行したりしましたが、改善されませんでした。どのようにすれば日本語もデータベースで正しく扱えるようになるのでしょうか?
回答を見る
  • ベストアンサー

データベースへの日本語入力

PHPとMySqlを勉強し始めたものです。 超初心者ですが、よろしくお願いします。 @PAGES(http://atpages.jp/)というサイトを使っています。 ネットで見つけたサンプルプログラムを使って、データベース(MySql)へのデータの入力と読み出しをやってみたのですが、半角英数字なら、読み込みや書き出しはできるのですが、日本語の文字であれば、空白になってしまいます。 プログラムを調べてみると、PHPでのデータベースへの書き込みのときは、ちゃんと日本語の文字を書き出そうとしているようなのですが、「phpMyAdmin」というサイトで書き込まれた情報を見てみると、空白なので、データベース側がデータの受け取りを拒絶したようにも思われます。 サイトで検索して、HTMLの<HEAD></HEAD>のところに下記のような行を入れたり、 <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> 『mysql_query("SET NAMES 'utf8'"); 』という行をデータの書き込み行の前に入れたりしても、変わりませんでした。 どのようにすれば、日本語もデータベースで扱えるようになるのか教えてください。 よろしくお願いします。

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • ok-rjak
  • ベストアンサー率52% (70/134)
回答No.1

> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> > mysql_query("SET NAMES 'utf8'"); そもそも、プログラムは何の文字コードで書かれていて、データベースの文字コードは何になっているんでしょう? 上記の記述だと、既に文字コードで相違がおこっていますので、うまく日本語が扱えていないのではと思います。 それと、データベース側のフィールドはちゃんと日本語がはいる型(varcharやtext)になっているのでしょうか? テストされたURLとサンプルコードなど、何か提示があれば回答しやすいかと思います。

関連するQ&A

  • MySQLへの吐き出し日本語が文字化けする

    自分なりに調べてみたのですが,わからないのでお尋ねいたします。 phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。 同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。 ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。 日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。

    • ベストアンサー
    • PHP
  • ブラウザーで日本語が文字化けする(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
  • データーベースのすべての画像を取り出したい

    データーベースのテーブル内の画像をすべて取り出すプログラムを書いています。 データベース(Mysql)には画像が4列(4個)存在しますがプログラムの書き方が悪いと思うのですが、1つしか画像を取り出すことができません。 すべて取り出すにはどこを直せばよいでしょうか? 書いたソースは以下になります。 たぶん$img_db=$row["img_data"]; echo $img_db;が原因のような気がしますが分かりません。 詳しい方教えてください。 <display.php>(データーベースから読み込みようphp) <?php $conn=mysql_connect("localhost","root",""); mysql_select_db("practice"); $result = mysql_query("select img_data from sample "); while($row= mysql_fetch_array($result)){ $img_db=$row["img_data"]; echo $img_db; } ?> <output.php>(ブラウザ表示用php) <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”> <title>画像表示</title> </head> <body> <p>MySQLのBLOBにバイナリで格納した画像を表示してみます。</p> <?php echo "<img src=\"display.php?$img_db\">" ?> </body> </html>

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

    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
  • phpmyadminで日本語が文字化け

    お世話になります。 現在PHP&MySQLを勉強しています。 書籍に掲載のPHPプログラムを試しているのですが、日記プログラムで、書き込み→読み出しは日本語で問題なく動作していますが、phpMyAdminでデータを表示してみると日本語の部分だけ文字化けしています。 プログラムの動作には問題ないのですが、別のプログラムを試すと、データも文字化けしないことが分かりました。 できれば、phpMyAdminでも文字化けしない方が好ましいのですが、解決方法はないのでしょうか。 文字コードはutf-8で統一したいと思っています。 どなたかお解りになる方、宜しくお願い致します。

    • 締切済み
    • PHP
  • フォルダ名が日本語の場合の文字化けについて

    PHP Version 5.3.1 MySQL Version 5.1.41 です。 以前、プログラム(PHP)からデータベースに日本語のデータを挿入すると文字化けしていたので、 プログラムからデータベースを利用する際に「SET NAMES utf8」をセットしてから挿入したら 文字化けがなくなりました。 そして今度は、日本語で書かれたフォルダ名をプログラムから取得したら 文字化けしていた(データベースに挿入しても文字化けしたままです)ので、 「SET NAMES sjis」にセットし直して、日本語のフォルダ名をデータベースに 挿入したらそのデータに関しては文字化けが起こらなかったのですが、 今度は当然ながらプログラムに記述していた日本語のデータを挿入したら文字化けになりました・・・ [SET NAMES utf-8 の場合] $arr = array('日本語'); → データベースへ挿入 → 文字化けなし プログラムで取得した日本語のフォルダ名 → データベースへ挿入 → 文字化けする [SET NAMES sjis の場合] $arr = array('日本語'); → データベースへ挿入 → 文字化けする プログラムで取得した日本語のフォルダ名 → データベースへ挿入 → 文字化けなし プログラムの側では両方とも同時に挿入する感じなので、その都度「SET NAMES~」で 切り替えたりするのは難しい状況のですが、なにか良い解決方法はありますでしょうか?

    • ベストアンサー
    • PHP
  • Mysqlで日本語がどうしても非表示になります

    xampp for windows 1.7.0 apache 2.2.11 mysql 5.1.30 php 5.2.8 をインストールしました。 OSはwindowsXPです。 phpの基礎勉強を終え、MySQLでデータベースの作成の学習の途中なのですが、コマンドラインからデータベースを作成しselect*文でテーブル表示すると、日本語のデータがどうしても文字化けしてしまいました。 いろいろネット検索して試行錯誤した結果、status文で呼び出すと表示される各characterset(Server,DB,Client,Conn)ともにutf8にようやく統一できたようですが、文字化けこそしなくなったものの、今度は非表示(空白)になってしまいます。一応phpmyadminでもそのデータを表示させてみたのですがやはり非表示です。 一日やってどうにもならず、どなたかのお力をお借りしたいと思います。なにとぞご回答よろしくお願いいたします。

  • MySQLからデータを取得すると日本語が「??」と表示される

    PHPとMySQLを使い、ブラウザでデータベースの読み書きをするプログラムを作っています。 ローカルで作成しているときは特に問題が無かったのですが、いざサーバマシンにアップしてみると問題が発生するようになりました。 【事象】 1.MySQLからデータを読み込みブラウザに表示すると、日本語のデータのみ「??」と表示される。 2.ブラウザからMySQLへデータの書き込みをしようとすると書き込みが出来ない。 【現時点での切り分け】 1.GETでデータを渡しており、受信した方で$_GET['hoge']を表示させると正常に表示される。ただし、データをMySQLに格納する際にエラーがでる。 2.英数字の読み書きは問題なし。 3.サーバマシンを直接操作し、コマンドプロンプトからデータを入力すると日本語でも正常に格納される。 【ローカルマシン】 Apache2.xx PHP 4.xx MySQL 5.xx 【サーバマシン】 Apache 2.2.0 PHP 5.1.2 MySQL 5.0 【設定等】 PHP、MySQLの両方とも文字コードをSJISに設定しています。 また、METAタグで「charset=Shift_JIS」と指定しています。 Apacheのhttpd.confファイルにおいてISO-8859-1をコメントアウトしましたが改善されませんでした。 mb_convert_encodingを使って文字コードを強制的に(?)SJISにして書き込もうとしてもダメでした。 読み込みも然りです。 色々と試してみましたが全然改善されず困ってます。 どなたかアドバイスをいただけましたらうれしいです。

    • ベストアンサー
    • PHP
  • PHP でMysqlを使用して日本語を登録する。

    すいません、教えて下さい。現在、PHPとMYSQLを連携させてデーターベースを構築中なのですが、日本語が登録できません。mysqlモニタにてinsert 文で登録すると日本語が登録できるのですが、phpを経由すると登録できないのです。phpから、既存のデータベースを呼び出すと日本語のところがすべて文字化けしてしまいます。ちなみにmysqlのmy.iniの設定はsjisにしてあります。ujisにするとmysqlモニタからでも日本語が登録できなくなります。どこの設定がいけないのでしょうか?ちなみにWindows Vista php5.1 mysql 5.1 です。

    • ベストアンサー
    • PHP
  • ポルトガル語と日本語の混在

    MySQL 5 で、ポルトガル語と日本語が混在したデータを扱いたいのですが、キャラクタセットは UTF8 でいいのでしょうか? データベース、テーブル、フィールドのすべてをデフォルトをUTF8にしたのですが、ポルトガル語の一部と、日本語が文字化けしてしまいます。 日本語のデータベースもありますので、 MySQLのデフォルトは eucjpms を使用しています。 なかなか上手くできません。よろしくお願いいたします。

    • ベストアンサー
    • MySQL