Blog: Upgrades: Character Sets and Collations
As more and more web-hosts retire PHP 5.4, more and more Zen Cart stores are going through the "upgrade process" ... many of them from versions of Zen Cart prior to v1.5.1. Since the concept of identifying the character-set used by the database (the
DB_CHARSET definition) wasn't introduced until Zen Cart 1.5.1, those stores' databases are normally using a latin1-style collation (e.g.
It's important that your Zen Cart's
CHARSET (as identified in each language's main language file, both storefront and admin) and
DB_CHARSET (identified in your configure.php files) definitions "agree", otherwise your customers with first names like José might have their names recorded as JosÃ© ... not pretty! In addition, many of the payment providers (PayPal, for example) are now using a UTF-8 character-encoding in their communications with your store; if your store is still using an ASCII character-encoding (like iso-8859-1), then any order placed by José is going to likely result in his name being mangled in your store's database.
There's a tool that can help you re-align your database's collation: Convert DB to UTF8. This plugin, available for download from the Zen Cart Plugins, will convert the character-set (collation) of each of the database's tables to
utf8_general_ci. Just make sure that your
DB_CHARSET definition (in both the storefront and admin /includes/configure.php files) is set to utf8 once the database is converted and don't forget to delete that file from your store's file-system when you've finished.
Another consideration as you're converting your store to have a consistent character-set: language files. If your store is currently using an ASCII character-encoding and you've made use of some special characters (other than standard alphabetics and numbers), then your language files might also need some care-and-feeding. For example, if you've included the "half" character (½) in an ASCII language file and you've updated your site to define your
CHARSET values as utf8, you'll find that � is displayed instead.
You can normally correct these character-display issues with the help of the Notepad++ editor, downloadable here. Once the editor is installed, use it to open your problematic language file(s). In the top-of-page menu ribbon, you'll see a tab named Encoding. If you click on that tab, the editor will show you what encoding is currently being used, most likely Encode in ANSI. You can use the editor to change the file's encoding, just click on the Convert to UTF-8 (not Convert to UTF-8 BOM) element in that Encoding tab's drop-down and save the file! Hopefully, you won't find a bunch of these.Once your store has been fully updated, you won't have any of those character-conversion headaches in the future!
If I've helped you on the Zen Cart forums or you've found one of my free plugins helpful, feel free to give a little back by clicking here.