文字化けが解決できません
使用データベースはSQLServer2008です
対象カラムはcharです
データベースの照合順序はJapanese_CI_ASです
ブラウザのエンコードをUTF-8にするとprint_r($row);の部分は文字化けせずに表示
されますprint("砂糖");は文字化けします
ブラウザの標準文字コード??SJISだとprint_r($row);文字化けします
print("砂糖");は文字化けしません
ということはSQLServerのデータの文字コードがUTF-8ということなのでしょうか
SJISだと思うのですが。
そこで、SQLServerがUTF-8だと仮定してprint_r(mb_convert_encoding($row, "SJIS","UTF-8"));
というプログラムを書いたのですが結果は同じでブラウザのエンコードをSJISにすると
文字化けしていまいます
どうすればブラウザのエンコードがSJISで文字化けしないようになるのでしょうか
教えてください。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift-SJIS">
<title>test</title>
</head>
<body>
<?php
try{
$dsn ='sqlsrv:server=.\sqlexpress;database=sample';
$dbname = "sample";
$user = "sa";
$password ="manager";
//$dbh = new PDO("mssql:host=.\\SQLEXPRESS;dbname=sample",$user,$password);
$dbh = new PDO($dsn,$user,$password);
$stmt = $dbh->prepare("select * from shohin");
$stmt->execute();
while($row = $stmt->fetch()){
//print_r($row);
//print_r(mb_convert_encoding($row, "SJIS","UTF-8"));
print_r($row);
}
unset($dbh);
unset($stmt);
// foreach($dbh -> query($sql) as $row)
// print($row["id"]);
// print($row["name"]);
// echo "接続できました";
// }
// $dbh = null;
print("砂糖");
}catch(PDOException $e){
print("Failed to get DB handle:aaakkka".$e->getMessage()."\n");
phpinfo();
exit();
}
?>
</body>
</html>
No.3ベストアンサー
- 回答日時:
#2です。
しょうこりもなくまたやってきました。おそらくこれが最後ですからもうちょっと付き合ってください。> mb_detect_encoding($row) の実行結果は何も表示されませんでした
何も表示されない == 何も返ってこないじゃないですね。何が返ってるか確認しましょう。おそらく False なんだろうけど、その場合はエンコーディングが検出できなかったということらしい(マニュアル参照)。空文字ってあるのかな?
とここまで書いて気づいた。$row って文字列じゃないじゃん(ふつうは名前で気づく。いかに適当に読んでるかバレる)。フィールド数がいくつかわからんけど、$row[0] とかやらないと値が取れないよね?
ご回答ありがとうございました。
$row[0]でエンコーディングの変換処理 mb_convert_encoding($row[0], "SJIS", "UTF-8");
としたら文字化けせずに値が取得できました。
うれしさと感謝の気持ちでいっぱいです。
ありがとうございました
No.2
- 回答日時:
PHP は大昔にちょっとかじった程度なので参考程度にきいてください。
> ということはSQLServerのデータの文字コードがUTF-8ということなのでしょうか
> SJISだと思うのですが。
"◯◯なはず" とか "◯◯だと思う" とか言っても始まらないんで、実際に調べたほうがいいんじゃないかな。mb_detect_encoding($row) と mb_detect_encoding("砂糖") を比較すればなにかわかるかも。
* おまけ
* PHP のバージョンは明記した方がいい回答がつくかも。
* "charset=Shift-SJIS" は打ち間違いかなあ。"Shift-JIS" じゃなくて…。
ご回答ありがとうございます。
mb_detect_encoding($row) の実行結果は何も表示されませんでした
mb_detect_encoding("砂糖") の実行結果はSJISでした。
いまだに、解決方法がわかりませんので皆様のご回答をお待ちしたいと思います
PHPのバージョンはphp-5.3.13-Win32-VC9-x86.msiをインストールしたので
PHP 5.3.13のWindows版だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
PHPからMSSQLへの接続結果の文字化け
PHP
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sortable ギブアップです…助け...
-
checkboxで複数選択して,OR...
-
php ログインID別 ページ表示
-
1ヶ月以内に誕生日を迎える社員...
-
syntax errorの原因について
-
PHP 10件表示 "前へ" "次へ"
-
PHPでMySQLデータを呼び出し、w...
-
DBで検索結果に該当するデータ...
-
PHP+MySQLでの配列のinsert文に...
-
MySQLでデータベースにデータin...
-
VBAをつかってクエリの情報を抽...
-
sqlから多次元配列に要素を格納...
-
実行時エラー3131 FROM 句の構...
-
insert1つの処理でもトランザ...
-
phpでforeach ($stmt as $row)...
-
テキストボックスに入れた内容...
-
<VB.NET>INSERT文でDBにデータ...
-
php データ削除
-
ResultSetインターフェイスでの...
-
値が「1」のカラム名を求めたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
dbに登録したデータをphpのプル...
-
アラートでyes noを作りたいです。
-
phpでmysqlを使ってデータベー...
-
ヒアドキュメントについて
-
MySQLに保存した画像を表示したい
-
PHP 10件表示 "前へ" "次へ"
-
mysqlから取得した配列をカンマ...
-
DBで検索結果に該当するデータ...
-
PEAR DBでの行取得について
-
検索結果にラジオボタンを付加...
-
SELECT結果から動的にコンボボ...
-
検索結果をgoogleのように数件...
-
PHPでMySQLデータを呼び出し、w...
-
PHPでMySQLのデータを2次元配...
-
checkboxクリック時、SQLを実行...
-
php5.2.9に変更後に不具合について
-
PDOでLIKE検索
-
PHP+MySQLでの配列のinsert文に...
-
PHP・MySQL使用で、年齢制限を...
おすすめ情報