0

この状況に関するほとんどの質問と回答を読みましたが、キャラクターの問題を解決できません。私のデータベースのデフォルトの文字セットはutf8であり、すべてのテーブルの照合はutf8_general_ciです。すべての設定がutf8とutf8_general_ciであると確信しています。これまで、何十億回もチェックしてきました。問題は、フォーム内に値を投稿した後、データベースに必要なものが表示されないことです。また、phpmyadminからデータベースを編集した場合、データをフェッチすると、再び必要なものが表示されません。

DB接続は機能します。この状況について前述したように編集しましたが、私のスクリプトは文字の仕様についてバグがあります。

DB接続コードは次のとおりです。

try {

$db = new PDO("mysql:host={$db_server};dbname={$db_name};charset=utf-8", $db_user, $db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
// exc 
}

あなたが助けることができればうれしいです

よろしく

4

3 に答える 3

1

@zerkmsが言及したことについて確信がある場合でも、同じエラーが発生する場合:

" 同じエンコーディングである必要があります: 1) ページ/フォーム 2) テーブルと列 (存在する場合) charset (照合ではない) 3) db 接続。それだけです。3 つすべてが同じ utf-8 の場合- 動作するはずです。動作しない場合は、何かが足りないので、それぞれを再確認する必要があります」

私のようにまだ問題がある場合は、フォームプロセスデータを確認して、忘れたフィルターがあるかどうかを確認してください。私はセキュリティ用のフィルターを持っていました。それは入力をサニタイズしていて、ANSIエンコーディング専用だったので、すべてをチェックしてください。

回答してくれたすべての人に感謝します。

于 2012-09-03T07:40:18.913 に答える
0

接続オブジェクトの文字セットをutf-8に設定します。これは適切であり、データベース内の他の設定は影響を与えないはずです。

あなたのページ(挿入するページと表示するページ)が両方とも正しくエンコードされていることを確認します。チェックすることが2つあります。ページがUTF-8エンコード(BOMなし)で保存されていることを確認します。これはエディター/IDEの仕事です。次に、次のように正しく宣言したことを確認します。

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

もちろん、間違ったエンコードされたページからデータベースにデータをすでに挿入している場合、データベース内のデータは無効であり、正しくエンコードされたページに正しく表示できません。

于 2012-09-03T07:20:25.127 に答える
0

:)ツールチェーンのどこかで、何かが utf8 を使用していません。PHPMyAdmin はこの種の問題でよく知られていますが、コマンド ラインやスクリプトを使用してデータベースを操作することを好むため、あまりお役に立てません。出力が phpMyadmin を除いてどこでも問題ない場合は、phpmyadmin に関連する多くのヒントを提供するこの投稿を参照できます。

ああ、PDO へのインスタンス化呼び出しで utf-8 エンコーディングを指定できます。

$con = new PDO('mysql:host=' . $server . ';dbname=' . $db . ';charset=UTF8', $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

MysqL を設定するときにできる最も基本的な便利なことは、これを/etc/my.cnfファイルに追加することです。

[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'

[client]
default-character-set=utf8

編集者はあなたにいたずらをすることもできます. 一部のエディターは、適切に構成されていないと、不適切なエンコーディングで切り替えて再保存することができ、utf-8 で再度開いたときに文字化けが発生する可能性があります。すべての適切な IDE とエディターは、UTF-8 を処理するように構成できます。

これがお役に立てば幸いです。

于 2012-09-03T05:58:00.580 に答える