1

私は自分の db 列にこの種の値を持っています。

フュルストヴァー・ミラ判事「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);?>"/>

入力フィールドでこれを取得します。

Judge-Fürstová Mila "Ut enim ad minim veniam"

では、この特殊文字と二重引用符の問題を一度に修正するにはどうすればよいですか?

4

2 に答える 2

3

htmlentities()は、PHP5.4 より前のデフォルトで ISO-8869-1 エンコーディングで動作します

関数呼び出しにエンコーディング パラメータを指定してみてください。

<?php echo htmlentities($page->title, ENT_COMPAT | ENT_HTML401, 'UTF-8');?>

ただし、2 番目のパラメーターの指定をバイパスする方法はありませんがENT_COMPAT | ENT_HTML401、とにかくデフォルトです。

于 2012-04-19T17:26:06.557 に答える
2

htmlentities() の代わりに htmlspecialchars() を使用してみてください。

于 2012-04-19T17:22:42.833 に答える