Recently I had an issue on one of my work websites where the database schema was setup in Latin-1 encoding, this was fine till the encoding of the website was also set to iso-8859-1 and nothing fancy was going on. However later in the last few months, I had been doing some development which required me to change the encoding to utf-8 and that resulted in a lot of issues. Some I am still resolving. One of the two solutions that we came up was assign it a custom function for 'escaping_strategy', which however wasn't the silver bullet to fix as there was more crazy code that was getting raw value from the model and hence our function would get by passed. I am still looking for better ways of fixing it (seems very likely a case of massive re-factoring required) however, this one tip was handy.
If you want to create an individual table to be utf-8 then in the schema.yml you can add.
?
1 2 3 4 5 6 7 8 | User: options: type: MyISAM collate: utf8_unicode_ci charset: utf8 columns: username: string(255) password: string(255) |
However this can be a painful repetitive task, especially if you have loads and loads of tables to work with. In case you are like me and prefer all your tables to be utf-8 by default, you can add this function to your ProjectConfiguration.class.php file.
?
1 2 3 4 5 | public function configureDoctrine(Doctrine_Manager $manager) { $manager->setCollate('utf8_unicode_ci'); $manager->setCharset('utf8'); } |
and then rebuild all the models (and possibly load your fixtures if you have any.
?
1 | # symfony doctrine:build --all --and-load --env=dev --no-confirmation |
Obviously bare in mind that this will drop your database and re-create the tables with utf-8 encoding.
If anyone has any suggestions for my problem, do leave a comment.
No comments:
Post a Comment