Index: db/models/fields/__init__.py
===================================================================
--- db/models/fields/__init__.py	(revision 8231)
+++ db/models/fields/__init__.py	(working copy)
@@ -515,6 +515,13 @@
         return super(BooleanField, self).formfield(**defaults)
 
 class CharField(Field):
+    def __init__(self, *args, **kwargs):
+        super(CharField, self).__init__(*args, **kwargs)
+        if self.unique:
+            self.binary = "BINARY"
+        else:
+            self.binary = ""
+
     def get_manipulator_field_objs(self):
         return [oldforms.TextField]
 
Index: db/backends/mysql/creation.py
===================================================================
--- db/backends/mysql/creation.py	(revision 8231)
+++ db/backends/mysql/creation.py	(working copy)
@@ -5,7 +5,7 @@
 DATA_TYPES = {
     'AutoField':         'integer AUTO_INCREMENT',
     'BooleanField':      'bool',
-    'CharField':         'varchar(%(max_length)s)',
+    'CharField':         'varchar(%(max_length)s) %(binary)s',
     'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
     'DateField':         'date',
     'DateTimeField':     'datetime',
@@ -20,7 +20,7 @@
     'PhoneNumberField':  'varchar(20)',
     'PositiveIntegerField': 'integer UNSIGNED',
     'PositiveSmallIntegerField': 'smallint UNSIGNED',
-    'SlugField':         'varchar(%(max_length)s)',
+    'SlugField':         'varchar(%(max_length)s) BINARY',
     'SmallIntegerField': 'smallint',
     'TextField':         'longtext',
     'TimeField':         'time',
