Framework CakePHP sets strings to null which are loaded from database tables and contain special characters like German Umlaute.
In app/Config/database.php, add to your config array: ‘encoding’ => ‘utf8’
public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'asdf', 'password' => 'meow', 'database' => 'bsdf', 'prefix' => '', 'encoding' => 'utf8', );
It seems like this works even if your DB columns have another charset / collation like latin1_swedish_ci.
If you are using Ajax, make sure you clean the browser’s cache after modifying the .php file. Otherwise the changes might not be shown immediately.
Basically, it would be also a good idea to use UTF-8 in your DB and all your .php / .ctp files.
- In MySQL, you have to change the default collation per DB, per table and also the columns themselves. phpMyAdmin is a good choice for doing this. Usually, no problem should appear if you e.g. change from latin to UTF-8, but to be safe create a backup first.
- Use collation utf8_unicode_ci, NOT utf8_general_ci! It could end in wrong results.
- For your files, if you use a PHP IDE like NuSphere PhpED: Right near the bar under the code window where the line numbers etc. are shown, you see the charset of the file. Click on it to change it to UTF-8. Windows Notepad has similar functions in the Open/Save dialogs.
- Make sure you set the correct charset in the header of your PHP files. In CakePHP, UTF-8 is already set in app/Config.core.php.