0

LAMP スタックでエンコードの問題が発生しています。

Web ページのヘッダーには次のものがあります。

私の PDO dsn は次のとおりです: mysql:host=localhost;dbname=$database;charset=utf8

オプション配列は次のとおりです。

options = array (
    // PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
);

PDO::MYSQL_ATTR_INIT_COMMAND; を設定する場合と設定しない場合の両方を試しました。どちらの方法でも同じ結果が得られます。

次のような方法でデータベースから取得します。

$sql = 'SELECT * FROM ...';
$prepared = $dbh->prepare($sql);
$prepared->execute()
while ($row = $prepared->fetch(PDO::FETCH_ASSOC)) {
    ...
}

バインドされたパラメーターはありません。

データベース、すべてのテーブル、およびすべての文字列 (CHAR、VARCHAR、TEXT) 列の照合は、utf8_unicode_ci です。

たとえば、データベースに (phpMyAdmin によって挿入されたように) 18 インチ x 24 インチある場合、入力フィールドとテキストエリア フィールドでは 18 インチ x 24 インチになりますが、フォームの外にエコーされると 18 インチ x 24 インチになります。

データベースに 18"x24" がある場合、入力フィールドとテキストエリア フィールドには 18"x24" が表示されますが、フォームの外にエコーされると 18"x24" になります。

18 インチ x 24 インチ (18 インチ x 24 インチでも 18 インチ x 24 インチでもない) を取得して、フォーム フィールドの内側と外側の両方を表示するにはどうすればよいですか?

4

1 に答える 1

0

私は自分の問題をひどく誤解していたことに気づきました。たとえば、内側と外側のフォーム フィールドの部分が間違っていました。

MySql データは実際には UTF-8 ではありませんでした。PHPコーディングではなく、データを修正する必要がありました。

于 2013-05-23T22:41:49.407 に答える