2

コードの編集/更新:
これで問題が解決しました。

$con = new PDO("mysql:host=$hostname;dbname=XXXXX;charset=utf8", $dbusername, $dbpassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 

データベースにキリル文字を入力しようとしています。PHP スクリプトは正常に接続し、データをデータベースに追加します。問題は、フォームがキリル文字を送信するたびに、データベースに "рты Ð´Ð»Ñ Ð¿Ð»Ð°Ð²Ð°Ð½Ð¸Ñ" のようにキリル文字が入力されることです。

どんな助けでも素晴らしいでしょう、ありがとう。

データベース照合は「utf8_general_ci」に設定されています。PHPファイルは「uft8」(hostgator host-ifが役立つ場合)として保存されます。

これをページの上部に持っています。

<?php header("Content-Type: text/html; charset=utf-8"); ?>

これをファイルのヘッダーに追加しました:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

データベースへの接続は次のようになります。

$con = new PDO("mysql:host=$hostname;dbname=XXXXX;charset=utf8", $dbusername, $dbpassword); 

フォームの例:

<form name="form" id="form" action="/form.php" method="post" accept-charset="utf-8">
<input type="hidden" name="foo" id="foo1" value="<?php echo $foo1; ?>"><?php echo $foo1; ?>   
<input type="hidden" name="bar" id="bar1" value="<?php echo $bar1; ?>"><?php echo $bar1; ?>  
<input type="submit" id="submit" value="submit"/>

* * php は、ロシア語のテキストをページ上で適切にエコーします。

PHP SQL挿入の例:

 $sql = "INSERT INTO foobar (foo1,bar1) VALUES (:foo1,:bar1)";
   $q = $con->prepare($sql);
   $q->execute(array(':foo1'=>$foo1, 
             ':bar1'=>$bar1));
4

1 に答える 1

3

してみてください

$con->exec("SET NAMES = utf8");

PDO オブジェクトの作成後。

データベースがこのコンテンツをこのように保存するのは正常です。MySQL クライアントをチェックしてみてください。UTF-8 データベース データを正しく表示できますか。

PHPMyAdmin の古いエディションなど、SQLYog の一部のエディションでは実行できないことはわかっています。

スクリプトから取得すると、適切なデータが得られるはずです。そうでない場合は、既に述べたように「SET NAMES」を使用してみてください。

それはあなたを助けるかもしれません。

ありがとう。

また、PHP PDO: charset, set names?も参照してください。

于 2013-08-05T11:18:40.337 に答える