Соединение PDO: объявление UTF-8 с SET NAMES / CHARACTER SET?

Согласно php.net, StackOverflow и другим источникам доверия, я могу найти 4 различных способа настройки UTF-8 для соединения PDO, но не могу найти, какой из них лучше выбрать.

Код подключения PDO (и некоторые модули):

$localhost = $_SERVER['SERVER_NAME'] == 'localhost';
error_reporting(-1); ini_set('display_errors', $localhost); // Old : error_reporting($localhost ? -1 : 0); see answer above
date_default_timezone_set('Europe/Paris');

$pdo_db = 'mysql:host=localhost;dbname=local_db;charset=utf8'; // METHOD #1
$pdo_login = 'root';
$pdo_pass = 'localpass';

try {
    $db = new PDO($pdo_db, $pdo_login, $pdo_pass, array(
        PDO::ATTR_ERRMODE => $localhost ? PDO::ERRMODE_EXCEPTION : PDO::ERRMODE_SILENT,
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', // METHOD #2
    ));
    $db -> exec('SET NAMES utf8'); // METHOD #3
    $db -> exec('SET CHARACTER SET utf8'); // METHOD #4
    $db -> exec('SET time_zone = \''.date_default_timezone_get().'\'');
} catch (PDOException $error) {
    die($error -> getMessage());
}

Итак, что я понял, так это то, что Метод 1 работает только с PHP 5.3+ (но кажется, что он немного глючит), а метод 2 предназначен только для MySQL. Различия между методом 3 и 4 заключается вMySQL вещьНо я до сих пор не знаю, кто из них лучше. И есть ли способ вызвать SET NAMES в атрибутах PDO, но не только для MySQL?

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос