2

pdoとphpを使用してアラビア文字をデータベースに挿入したいのですが、これらの文字をデータベースに取得しました

الجامع &#1575

そして私が使うとき

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

結果は

   ??????????

phpMyadminで列のコレクションを作成します

utf8mb4_unicode_ci

この

utf_unicode_ci

しかし、私はまだ同じエラーがあります。

そして私はこのような接続を試みました: (totti、tottiは私の実際のユーザー名とパスワードではありません)

parent::__construct('mysql:host=localhost;dbname=ams-competation;charset=utf8"', 'totti', 'totti');

それでも同じエラーが発生します

そして私もこのように試しました:

parent::__construct('mysql:host=localhost;dbname=ams-competation;charset=utf8', 'totti', 'totti'
                ,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

動作しません:(

フォームを送信した後、データベースに挿入する前に、値をエコーし​​、アラビア文字を取得しました。これは、問題がデータベースにあることを意味しますが、エコーはメタを使用せずに機能します

phpmyadminITWORKSからアラビア文字を挿入しようとしたとき

使ってます

phpmyadmin in XAMPP 1.7.4
php 5.5.3

最後に私は解決策を見つけました、そしてそれは:

  1. 列のコレクションをutf8_unicode_ciにします
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">ヘッダーに入れる
4

3 に答える 3

3

データベースに接続するときは、接続をutf-8に設定してみてください。

  • ルールとベストプラクティスに従っている場合:

次のように、構成ファイルで最初に定数を設定します。

define('DB_SERVER', 'your_hostname');
define('DB_USERNAME', 'your_username');
define('DB_PASSWORD', 'your_password');
define('DB_CHARSET', 'UTF-8');
define('DB_DATABASE', 'your_dbname');
define('PDO_DSN', 'mysql:host=' . DB_SERVER . ';dbname=' . DB_DATABASE . ';charset=' . DB_CHARSET);

次に、接続を次のように設定します。

$_dbhandler = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"));
  • 速くて汚い

次のように接続を設定します。

$dbhandler = new PDO('mysql:host=your_hostname;dbname=your_dbname;charset=UTF-8', $user, $pass);
于 2012-11-20T00:49:30.347 に答える
2

問題は、データベースへのアクセス方法にあるとは限りません。htmlentities()表示される文字はHTMLでエンコードされているため、DBに書き込む前にデータにあるようなものを使用しているように見えます。

于 2012-05-19T12:53:49.443 に答える
1

define('DB_CHARSET', 'UTF-8');動作しない

define('DB_CHARSET', 'UTF8');代わりに使用してください

于 2015-10-16T21:27:17.690 に答える