我有一台安装了 symfony 框架的带有 mysql 的 linux 服务器。 现在我正在尝试从 sql server 2012 获取数据并且一切正常,除非我尝试在 mysql 数据库中插入值。
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\x80 IN P...' for column 'note_anagrafica' at row 1
看来问题出在数据转换上。
我尝试插入数据的 mysql 中列的数据类型是:
text
排序规则是:
utf8_unicode_ci
FreeTds 配置设置为 UTF-8,驱动程序为 odbc。
有人能解决这个问题吗?
编辑:
odbc.ini
[server]
Driver = FreeTDS
Server = x.x.x.x
Port = 1234
Database = databasename
TDS_Version = 8
client charseg = UTF-8
server charset = CP1252
freetds.conf
[server]
host = x.x.x.x
port = 1234
tds version = 8.0
client charset = UFT-8
text size = 20971520
use uft-16 = true
mysql 的 Doctrine 配置。
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
外部 mssql 数据库的 doctrine 配置:
server:
driver_class: Lsw\DoctrinePdoDblib\Doctrine\DBAL\Driver\PDODblib\Driver
host: "%a_database_host%"
port: "%a_database_port%"
dbname: "%a_database_name%"
user: "%a_database_user%"
password: "%a_database_password%"
charset: utf8mb4
从现在开始,当我尝试将数据插入 mysql 时,我收到了来自 sql server 2012 with doctrine 的错误。 直到现在我在阅读时都没有问题,如果我在网上输出结果,像 ø 这样的特殊字符带有 � 符号。 在调用之前我必须进行转换
$entityManager->persist($object);
$entityManager->flush();
最佳答案
为 doctrine 配置设置字符集为 utf8mb4 就可以了。
关于mysql - FreeTDS UTF-8 插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44355193/