php Symfony教义字符集问题

mec1mxoz  于 2023-11-16  发布在  PHP
关注(0)|答案(2)|浏览(130)

我正在尝试学习symfony并通过各种示例进行工作。主要问题是我真的不知道如何配置doctrine.yaml
我使用SQLSRV
当我加载php bin/console doctrine:fixtures:load --append错误出现:SQLSTATE [IMSSP, -48]: The encoding 'utf8' is not a supported encoding for the CharacterSet connection option.
我的理论配置是:

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_sqlsrv'
        charset: utf8
        default_table_options:
            charset: utf8
            collate: utf8_general_ci

        url: '%env(resolve:DATABASE_URL)%'
    orm:
        auto_generate_proxy_classes: true
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

字符串
我也尝试了默认配置:

charset: utf8mb4
    default_table_options:
        charset: utf8mb4
        collate: utf8mb4_unicode_ci

c0vxltue

c0vxltue1#

字符集utf8不存在,但UTF-8(全部大写)存在。根据Microsoft的PDO_SQLSRV documentation
要向服务器发送或检索UTF-8编码的数据,请执行以下操作:
1.确保源列或目标列的类型为nchar或nvarchar。
1.在parameters数组中指定PHP类型为SQLSRV_PHPTYPE_STRING('UTF-8')。或者,指定“SetterSet”=>“UTF-8”作为连接选项。
当您将字符集指定为连接选项的一部分时,驱动程序假定其他连接选项字符串使用相同的字符集。服务器名称和查询字符串也假定使用相同的字符集。
您可以将UTF-8或SQLSRV_ENC_CHAR传递给MysterSet,但不能传递SQLSRV_ENC_BINARY。默认编码为SQLSRV_ENC_CHAR。
您可能想尝试以下操作:

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_sqlsrv'
        charset: UTF-8
        url: '%env(resolve:DATABASE_URL)%'

字符串

yzuktlbb

yzuktlbb2#

好的,我刚刚发现了这个问题。这个问题与字符集无关。这个问题与滥用环境文件有关。env.local是活动的,它被设置为utf8作为默认值。我改变了.env.local文件而不是.env,现在问题已经解决了。

相关问题