У меня такая ценность в столбце db,
Судья-Fürstová Mila "Ut enim ad minim veniam"
Я использую PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
для обработки всех моих специальных символов,
class database_pdo { # database handler protected $connection = null; # make a connection public function __construct($dsn,$username,$password) { try { $this->connection = new PDO($dsn, $username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { # call the get_error function $this->get_error($e); } } ... ... ... }
И когда я пытаюсь напечатать это значение в своем поле ввода,
<input name="title" type="text" value="<?php echo $page->title;?>"/>
Я только получаю Judge-Fürstová Mila в своем поле ввода.
Если я использую htmlentities
для исправления проблемы с двойными кавычками,
<input name="title" type="text" value="<?php echo htmlentities($page->title);?>"/>
Я получаю это в своем поле ввода,
Судья-Фюрстова Мила «Ун-энд-энд-микс-венам»
Итак, как я могу исправить эти специальные символы и двойные кавычки сразу?
Попробуйте использовать htmlspecialchars () вместо htmlentities ().
htmlentities () работает с кодировкой ISO-8869-1 по умолчанию до PHP5.4
Попробуйте указать параметр кодирования для вызова функции:
<?php echo htmlentities($page->title, ENT_COMPAT | ENT_HTML401, 'UTF-8');?>
Однако нет возможности обойти подачу второго параметра, но ENT_COMPAT | ENT_HTML401
ENT_COMPAT | ENT_HTML401
умолчанию все равно ENT_COMPAT | ENT_HTML401
.