使用PHP发送波兰语字符

时间:2015-09-29 08:18:39

标签: php character-encoding special-characters polish

我有一个问题,我可以在这个问题上找到很多关于这个问题的问题。 我希望POST的波兰人物:

当我通过POST通过表格发送以下数据时:

Ciało wielbłądów osiąga długość do 3 m. Ich szyja jest długa, łukowato wygięta; głowa długa,

PHP显示以下内容:

<p>Ciało wielbłądów osiąga długość do 3 m. Ich szyja jest długa, łukowato wygięta; głowa długa,

即使直接做:

exit(print_r($_POST));

在页面顶部。

到目前为止我做了什么?

我尝试使用HTML实体

exit(htmlentities($_POST['EditorField'], ENT_NOQUOTES, 'UTF-8'));

我尝试使用utf8_decode

exit(utf8_decode($_POST['EditorField']));

我已将内部编码设置为UTF-8:

mb_internal_encoding('UTF-8');

这在框架初始化类中很早就发生了。 我希望有一些我错过的东西,无论如何都可以工作。

修改

我添加了以下内容:

<form action="" method="post" accept-charset="utf-8">

接受-字符集= “UTF-8”

我删除了TinyMCE编辑器

仍然没有运气!

Ciało wielbłąd&oacute;w osiąga długość do 3 m. Ich szyja jest długa, łukowato wygięta; głowa długa

修改 与此同时,我确实找到了以下内容:

添加:

header('Content-Type: text/html; charset=utf-8');

这样可以正确发送$ _POST。 我认为这与以下相同:

mb_internal_encoding('UTF-8');

但我错了。

虽然仍然存在一个小问题。 使用PDO保存数据时,它仍然会截断数据。

我认为我仍然使用正确的设置初始化连接

///########==================================================
///######## SET OPTIONS FOR PDO IN ARRRAY FORMAT        
///########==================================================
$options = array(
                    PDO::ATTR_PERSISTENT                =>      true, 
                    PDO::ATTR_ERRMODE                   =>      PDO::ERRMODE_EXCEPTION,
                    PDO::ATTR_DEFAULT_FETCH_MODE        =>      PDO::FETCH_ASSOC,
                    PDO::MYSQL_ATTR_INIT_COMMAND        =>      'SET NAMES utf8'
                );
///########==================================================



///########==================================================
///######## TRY CONNECTING WITH THE PDO DATABASE
///########==================================================
try {
    ///######## MAKE THE CONNECTION AND ASSIGN IT TO : DBH
    self::$DbConnection[$ConnectionName] = new PDO(
                                                        $dsn,
                                                        self::$DbCredentials[$ConnectionName]['username'],
                                                        self::$DbCredentials[$ConnectionName]['password'],
                                                        $options
                                                    );
    ///######## SET UTF 8
    self::$DbConnection[$ConnectionName]->exec('SET CHARACTER SET utf8');
}
///######## CATCH ANY ERRORS
catch (PDOException $e) {
    ///######## IF ANY ERRORS JUST SHOW THEM
    ///self::$error = $e->getMessage();
    exit(self::errorField('<strong>PDO database connection error</strong><br />'.$e->getMessage()));
}
///########==================================================

(*我当然在某处犯了一个错误。但现在我必须找到它...... *)

  

解决了!! 我希望有人能在这篇文章中找到我,因为我找到了解决方案。而且它的方向完全不同于   该板上所有其他指出的问题:

     

必填:

header('Content-Type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
     

但删除了!! :

                        PDO::MYSQL_ATTR_INIT_COMMAND        =>      'SET NAMES utf8'
     

我也删除了:

self::$DbConnection[$ConnectionName]->exec('SET CHARACTER SET utf8');
     

分别尝试了上述两种情况。但现在它有效。

0 个答案:

没有答案