質問編集履歴

1 切り分けについての追記

halkichi

halkichi score 133

2016/12/17 22:04  投稿

さくらレンタルサーバのsqlで文字コードが...
【やりたいこと】
・さくらのレンタルサーバを利用してPHPのページからコメントの投稿
・投稿されたデータをmysqlに蓄積し、別の画面に出力
【困っていること】
・データの挿入時に文字化けする
さくらのレンタルサーバでPHPをmysqlと接続して使っています。
PHPからDBにinsertしたときに日本語が文字化けしてしまい、困っています。
PHPはPDOを使って接続したいのですが、
さくらのレンタルサーバはsqlのmy.cnfを設定する権限がありません。
なので、insertする側のPHPのコードで
```
$dbh = new PDO($dsn, $user, $password);
$dbh->query('SET NAMES utf-8');
```
として文字コードの変換をしていますが、phpMyAdminで確認すると?????????と文字化けします。
もちろんこのまま出力しても文字化けのまま表示されます。
sqlの文字セットがこちら
```
character_set_client   utf8
character_set_connection   utf8
character_set_database   utf8
character_set_filesystem   binary
character_set_results   utf8
character_set_server   ujis
character_set_system   utf8
character_sets_dir   /usr/local/share/mysql/charsets/
```
ちなみ出力時は
```
mb_convert_encoding($str, "UTF-8", "ujis");
mb_convert_encoding($str, "UTF-8", "EUC-JP");
```
どちらも試しましたが駄目でした...
どなたか回避する方法をご存知の方はいらっしゃらないでしょうか..?
どなたか回避する方法をご存知の方はいらっしゃらないでしょうか..?
追記:
PHPでフォームから受け取ったデータを画面にechoで出力しても文字化けは発生しないのでデータベースに格納した際に何か不具合が起きていると判断しています
  • PHP

    26067 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • SQL

    3306 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る