- 締切済み
selectで取得したデータがブラウザ上で文字化けする
質問があるのですがよろしくお願いします。 MySQLのバージョンは4.1です。 とあるテーブルXから「メソッド」という文字のデータをselectで取得して(perlのDBIを使用)、CGIでhtmlに埋め込んで、ブラウザに表示させるプログラムがあるのですが、埋め込むhtmlがAの場合は正常に「メメソッド」と表示されるのに、埋め込むhtmlがBの場合には「・lt;\ッド」のように文字化けする、というような現象が起こっており、困っております。 このような現象が起きるのにははどういった原因が考えられるでしょうか? また解決方法をご存知の方がいらっしゃいましたら、ご教授よろしくお願いします。
- miraikako
- お礼率55% (118/211)
- MySQL
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- moon_night
- ベストアンサー率32% (598/1831)
AとBだけの違いだけで、(質問には書いてありませんが、Aと言うテーブルとBと言うテーブルですよね?)AとBが同一である場合、どちらかだけに問題が起こることはありえません。 AとBの差はなんですか? 情報が全然足りませんので、ナイスな回答ができません。 >文字コード的には問題ないと思うんです。 本当にそうなのですか? そう思ったということはそれだけの判断材料があったと思いますが、その判断材料を開示してください。 その辺が分からないとこちらからどこが悪いとは言えません。 ちなみに、DBの格納がうまくいったからといって、、DBから取り出して表示するときに文字化けしないとは限りません。
- yambejp
- ベストアンサー率51% (3827/7415)
前回の質問で解決したわけではないのでしょうか? 「ソ」=「83 5C」ですよ。
補足
同じような質問で申し訳ないです。 下記の通り、insertやupdate実行時の問題はプレースホルダ(?)で解決し、文字化けせずに格納されるようになったのですが、データを取得する際の文字化けが直らないんです。select実行時に化けてるのか、それとも他のCGIの部分が原因なのか。。 ちなみに「ソ」が原因ではないと思います。 「メメ」とうデータをDBから取得したときにも化けるので「メ」が原因だと思います。しかも書いてあるとおり、特定のテーブルから引き出したときに文字化けするのです。Aというテーブルから「メメ」と取り出しても化けないのに、Bとうテーブルから「メメ」と取り出したときは文字化けしたりするのです。。下に文字コードの問題ではないと思うと書いちゃいましたが、やっぱ文字コードかもしれません。埋め込み先のhtmlはShift_JISです。
- moon_night
- ベストアンサー率32% (598/1831)
MysqlとHTMLとCGIの文字コードはどのようになっていますか?
補足
文字コード的には問題ないと思うんです。 insertやupdateが文字化けせずにちゃんとDBに書格納されるので。。
関連するQ&A
- 文字化けされたまま格納される?
質問があるのですがよろしくお願いします。 現在、CGIを使ったサイトを持っていおり、そのサイトのデータベースをテキスト形式のものからMySQLに移行したのですが、テキスト形式でデータを保存していた時は大丈夫だったのに、MySQLに保存するようにすると、「表示」のような文字が文字化けしてブラウザに表示されるようになってしまいました。PHPMyAdminで確認すると、文字化けしているところはしているので、データをMySQLに格納する過程で文字化けしているような気がします。 これにはどういった原因が考えられるでしょうか?どなたか解決方法が分かる方ご教授よろしくお願いします。 なお、perlからDBIを経由して、MySQLにアクセスしています。
- ベストアンサー
- MySQL
- perlのDBIモジュールからmysqlへデータを送ったら文字化けします。
こんにちは。 タイトル通り、perlのDBIモジュールからデータベース(mysql)にデータを渡してみたのですが(INSERT INTOです。)phpmyadminというDB管理ツールでテーブルの内容を見てみると、文字化けしてました。 フォームより受け取った値(文字列です。もっというと名前)をCGIでデータベースへ追加するといったことをしています。ソースは以下のとうりです。 require 'cgi-lib.pl'; my %formin; &ReadParse(\%formin); $sei=$formin{'sei'}; $mei=$formin{'mei'}; あとはこの変数をDBIでデータベースに渡すだけなので略します。 データベースへデータを渡したとき、文字化けさせないためには、どうしたらいいのでしょうか? 初歩的なことかもしれませんが、どうかお力を貸してください。お願いします。
- ベストアンサー
- MySQL
- CGIでmysqlからデータ取得できない
MYSQLとDBIを利用してデータベースと連携したCGIを作成しようとしています。 CGIからあるテーブルのデータをselectしたときに、取得データの件数は取得できるのに、肝心のデータそのものがnullになってしまいます。 件数が取れるので、データベースへのアクセスは問題ないのかなと思うのですが・・・。 DBIのインストールに問題があるのでしょうか? 何か心当たりのある方がいらっしゃればアドバイスいただけるとうれしいです。 よろしくお願いします。
- 締切済み
- その他(データベース)
- 日本語の文字化け
APACHE、MYSQL、PHPである本をもとに住所録を作りました。ブラウザには問題なく登録した氏名、住所などが表示されましたが、ターミナルでselect * form テーブル名を実行してみると、日本語が文字化けしています。同様にPHPmyadminのほうでも日本語が文字化けしています。ブラウザにはきちんと表示されるので、この本を読みすすめていく分には問題ないのですが、今後絶対に困ると思われますので、今のうちに直したいです。原因と修正方法を教えて下さい。 apache 1.3.3 MYSQL 4.0.27 PHP 4.4.1 MAC OS X 10.4.8 よろしくお願いします。
- 締切済み
- MySQL
- データベースでの文字化け
お世話になっております、ぷりんと申します。 下記の投稿をしましたが、解答が得られませんでした・・・。 しかしいろいろ調べているうちに、PHPでは「 mysql_set_charset 」を実行すると文字化けが治るとお聞きしました。 この mysql_set_charset をPerlで実行するには、どうしたらよろしいのでしょうか? 以下前回投稿 3日間文字化けと格闘した結果、ついに力尽きてしまったのでまたこちらにお世話になります(TдT) 使用しているコードはUTF-8です。 さて、データベースへ $db=DBI->connect("略"); $sth = $do->prepare("select name from xxx"); にて接続、nameカラムのデータを抽出し、配列変数に入れて表示させました。 データベースに直接日本語入力(例えば”ああああ”)をし、抽出すると、HTML出力の際に「????」となってしまいます。 INT型は正常に処理されます。(文字ではありませんが念のため記述) データベースに直接記入しない方法(CGIにてInsertを使用して)「ああああ」を送信しますと、データベースをブラウザで確認した際に「ã‚ã‚ã‚ã‚」になりますが CGIにてSelectを使用し、リクエストすると きちんと「ああああ」と表示されます。 また、InsertでNプレフィックスをつけた際はデータベースをブラウザで確認するときちんと「ああああ」となっておりますが、CGIにてSelectを使用してリクエストすると「????」とデータベースに直接日本語入力した時と同じ結果になります。 最終的に「読み込みも問題なく、データベースをブラウザで確認しても(または直接編集しても)正常に処理される環境にしたいのです! 文字化け関係はしんどいかと思いますが、どなたかお詳しい方、ご教授お願い致します。 -環境- ●ロリポップレンタルサーバー Perl(ver.5.8.8) MySQL(バージョン5.1.34)利用可。『PHP My Admin』でのみ利用可。 ●本文中の「データベースをブラウザで確認」とは、PHP My Adminにはいって確認しているという意。 ●cgi保存形式は全てUTF8(BOM無し。有だとエラー) ●HTML出力は print "Content-type: text/html; charset=utf-8\n\n"; ●show variables like 'char%'; を実行した結果 character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server utf8 character_set_system utf8 character_sets_dir/usr/share/mysql/charsets/ ●照合順序 カラム:utf8_unicode_ci テーブル:utf8_unicode_ci DB:utf8_unicode_ci MySQL接続:utf8_unicode_ci -試したこと- Encode::encodeやEncode::decode関数を使用しても変化無し。
- ベストアンサー
- Perl
- mysqlから取得した文字の文字化け
mysqlでchar(20)に日本語を登録しました。 mysql上では当然select KUDAMONO from SHOHI_TABLE;とすると みかん りんご かき いちご というようにコマンドプロンプト上で表示されます。 このデータをjavaでで取得すると文字化けを起こします。 while(rset.next()){ System.out.println(rs.getString("KUDAMONO")); } 半角データの場合はgetString("列名")で文字化け起こしません。 数字データについてもgetInt("列名")で文字化け起こしません。 原因はなんでしょうか?
- ベストアンサー
- Java
- ブラウザーで日本語が文字化けする(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
お礼
回答くださった皆様ありがとうございました。 単純にperlのソースが間違っていました。。 もう少し調べてから投稿するようにします。。