0

我的 LAMP 堆栈存在编码问题。

网页头有:

我的 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。

如果我的数据库中有(例如)18”x24”(由 phpMyAdmin 插入),我在输入和 textarea 字段中得到 18”x24”,但在表单外回显时得到 18×24”。

如果我的数据库中有 18"x24",我在输入和文本区域字段中得到 18"x24",但在表单外回显时得到 18"x24"。

如何让 18”x24”(不是 18×24”,也不是 18×24”)同时显示内部和外部表单域?

4

1 回答 1

0

我发现我严重错误地描述了我的问题。例如,内部与外部表单字段部分是错误的。

MySql 数据不是真正的 UTF-8。我必须修复数据,而不是 php 编码。

于 2013-05-23T22:41:49.407 回答