![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
お世話になります。
現在ちょっとしたサイトを作っていてmysqlを使っています。
携帯用のサイトなのでmysql(UTF-8)⇒PHP(SHIFT-JIS)という風に
PHP側でデータベースの表示をする際、UTF-8からSHIFT-JISに変換しようとしましたが、うまくいきませんでした。
http://oshiete1.goo.ne.jp/qa1764581.html
などを参考に下記のようなコードを書きました。
<?php
$link=mysql_connect("接続先","データベース名","パスワード");
if(!$link){
die("接続失敗");
}
$db=mysql_select_db("d0295dy4db1",$link);
if(!$db){
die("接続に失敗しました");
}
$sql=<<<SQL
select * from yougoshu ORDER BY RAND() limit 1
SQL;
$result=mysql_query($sql,$link);
if(!$result){
die("問い合わせに失敗しました");
}
while($data = mysql_fetch_assoc($result)):
$data = mb_convert_encoding("$data","SJiS-win","UTF-8");
?>
<?php echo $data['word']; ?><br />
<?php echo $data['mean']; ?><br />
<?php endwhile; ?>
ちょっと荒い書き方ですが、「$data = mb_convert_encoding("$data","SJiS-win","UTF-8");」の部分をコメントアウトすれば、文字化けした内容が出力されるのは確認しています。
解決方法わかりそうな方、ご教授いただけませんでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
while($data = mysql_fetch_assoc($result)):
$data = mb_convert_encoding("$data","SJiS-win","UTF-8");
$data配列を、"$data"とすることで文字列に変換して(結果はたぶんArrayって文字列になるかな)、文字コード変換して、$dataという変数に入れる(型は文字列型、内容は文字コード変換の時点で予測不可、半角アルファベットなのでArrayって文字列になる可能性が高い)。
<?php echo $data['word']; ?><br />
<?php echo $data['mean']; ?><br />
この時点で、$dataは文字列型変数なので上記のように扱うと、エラーが出るのではないか?
mb_convert_encodingは配列を扱えないし、配列を"$data"のように扱うのは間違いだし、出力時点で
<?php echo mb_convert_encoding($data['word'],"SJIS-win","UTF-8"); ?><br />
とすべきかな。
No.1
- 回答日時:
PHPとMySQLのバージョンが分からないので何とも言えませんが、PHP側はスクリプトをutf-8で記述し、念のため
mb_internal_encoding("utf-8");
としていますか?
また、DB接続後に
mysql_query("SET NAMES utf8", $db);
を実行してみてください。
それから、携帯絵文字に対応するUTF-8はありませんから、DBにinsertする際に文字化けしますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP php エラー 2 2022/10/23 16:43
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でCSVファイルの行数を読...
-
CSVに追加データを挿入したいで...
-
別ファイルの構造体の値を読み...
-
Resource id #3 と表示されま...
-
文字列の文字一文字ずつを解析...
-
csvの内容を行単位で削除したい
-
出力結果がないときの処理方法
-
array_randを使って複数表示
-
$_SESSIONに二次元配列を使える...
-
file_existsでファイル名の部分...
-
プルダウンメニューにDBの内容...
-
phpとmysqlで「あいまい検索」...
-
ショッピングカートで$_SESSION...
-
配列内の値を分解して再格納
-
PHPにてクラスを配列にすること...
-
sqlのデーターを『あ行』『か行...
-
更新されたhtmlのタイトルを表...
-
STLのvectorで作った配列をメン...
-
配列の並べ替え
-
禁止ワード設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
-
Resource id #3 と表示されま...
-
ヒアドキュメントの中のfor文
-
自動で番号を振りたい
-
C言語でCSVファイルの行数を読...
-
配列同士の足し算のループ処理
-
stdClass Objectを連想配列のよ...
-
PHPでCSVの一部の行を編集したい
-
phpを実行するとファイルダウン...
-
行数が30万件ほどあるCSVから、...
-
phpでCSVファイルの中身を多次...
-
php Undefined variableエラー
-
CSVデータの行数カウントをした...
-
csvの内容を行単位で削除したい
-
複数ファイルで、それぞれの行...
-
テキストデータから指定行の削除
-
rubyで複数列のデータを一行に...
-
PHP5でCSVの指定行データだけを...
おすすめ情報