PHP PDO: персонажи не будут показывать - PullRequest
1 голос
/ 07 декабря 2010

Что бы я ни пытался сделать.Если я вставляю в öäå или создаю цикл while из строк, которые находятся в БД и содержит öäå, это выглядит как öäà ¥.

Это должно иметь какое-то отношение к PDO,потому что он работал нормально с mysql _ *.

Хотя у меня были эти атрибуты в mysql_ *:

# mysql_set_charset("utf8",$link);
# mysql_query("SET NAMES 'UTF8'");

Мое соединение в PDO выглядит так:

$connect = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset:UTF-8", DB_USER, DB_PASS, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

Как я могу решить это?Я полагаю, что мне также нужны где-то "набор имен", как?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2010

Оператор SET NAMES 'UTF8' правильный, но вы должны выполнять его каждый раз. Вы можете настроить PDO на автоматическое выполнение команды:

$dsn = sprintf( 'mysql:dbname=%s;host=%s', DB_NAME, DB_HOST );
$driver_options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' );
try {
    $dbc = new pdo($dsn, $user, $pw, $driver_options);
}
catch (PDOException $e) {
    // Handle exception
}

(через Гален Гровер )

0 голосов
/ 08 декабря 2010

öäå - это то, что вы видите, если пытаетесь отобразить UTF-8 в представлении, которое настроено на схему декодирования не-UTF. Либо вы вставили данные в кодировке UTF-8 в базу данных, отличную от UTF8, либо база данных - UTF8, но для терминала, на котором отображаются результаты, не установлено значение UTF8.

...