我已经安装了推进1.6。我可以用命令在mysql中创建表。
下面是我在文件runtime-config.xml中的设置
<propel>
<datasources default="myProject">
<datasource id="myProject">
<adapter>mysql</adapter>
<connection>
<dsn>mysql:host=localhost;dbname=myDBname</dsn>
<user>myUser</user>
<password>mypass</password>
**<charset>utf8</charset>
<collate>utf8_unicode_ci</collate>**
</connection>
</datasource>
</datasources>
</propel>
mysql数据库和表用户有排序规则utf8\u unicode\u ci(见下图):
mysql排序截图
ι 通过以下代码创建一个新的patient对象来测试一切正常:
$pat = new Patient();
$pat->setEmail("tg@gmail.com");
$pat->setAddress("Η διεύθυνσή μου");
$pat->setAmka("555555555");
$pat->setBirthdate("1966-01-01");
$pat->setFirstname("Τοόνομάμου");
$pat->setLastname("τοεπώνυμόμου");
$pat->setPhone("2109999999");
$pat->setSex(1);
$pat->save();
我检查了netbeans中的debug模式,对象$pat包含正确格式的值,以便我可以读取它们。
save()之后,在mysql中,希腊值显示如下:mysql values saved screenshot
我希望你能帮我解决这个问题。先谢谢你。
3条答案
按热度按时间kxe2p93d1#
最后,我找到了解决办法。
在mysql中,我使用以下命令检查设置:
我不得不用utf8mb4替换字符集utf8。
现在一切都很完美!!
更多信息,https://mathiasbynens.be/notes/mysql-utf8mb4
6ioyuze22#
您必须在推进连接dsn-中指定字符集
runtime-config.xml
文件如下:https://github.com/propelorm/sfpropelormplugin/issues/74#issuecomment-2011350
xxhby3vn3#
Τοόνομάμου
,当“mojibaked”变成Τοόνομάμου
. 注意,这种模式通常Î
还有第二个角色,比如你的截图。显然地,latin1
在某个时候被牵扯进来。utf-8字符故障;我所看到的并不是我所看到的,而是莫吉巴克及其原因。
可能你有“双重编码”,这个链接也讨论了这个问题。
如果选择修复数据而不是重新开始,请参阅http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases