5

doctrine (symfony2) で文字列フィールド (mysql データベース) に保存しようとしています:

$blogpost->setTitle = "Test !§$%&/()=? äöü ÄÖÜ :D";

$em = $this->getDoctrine()->getManager();
$em->persist($blogpost);
$em->flush();

しかし、それは私を救います:「テスト!」(残りは行方不明)

エンティティは次のとおりです。

/**
 * @ORM\Column(type="string")
 */
protected $Title;

mysql データベースは utf8_general_ci です。

(phpmyadmin を使用して手動でエンティティを追加すると、正しく動作します。)

ドイツ語のウムラウトが必要です。あなたが私を助けてくれることを願っています。

4

2 に答える 2

3

エンティティ管理接続文字列のエンコーディングを設定する必要があります。

doctrine:
    dbal:
        driver: %database_driver%
        host: %database_host%
        port: %database_port%
        dbname: %database_name%
        user: %database_user%
        password: %database_password%
        charset: UTF8

このようにして、データベースのすべての列に UTF8 文字を含めることができます。

于 2013-01-26T07:20:52.967 に答える
2

このファイルでは vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php

彼らは持っている

if ( ! isset($options['collate'])) {
  $options['collate'] = 'utf8_unicode_ci';
}

に変更してみてください utf8_general_ci

こちらもご覧ください

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/faq.html#how-do-i-set-the-charset-and-collat​​ion-for-mysql-tables

于 2013-01-26T07:01:37.307 に答える