diff --git a/django/core/validators.py b/django/core/validators.py
index 458f419..efb0a41 100644
--- a/django/core/validators.py
+++ b/django/core/validators.py
@@ -196,7 +196,7 @@ class BaseValidator(object):
 
     def __call__(self, value):
         cleaned = self.clean(value)
-        params = {'limit_value': self.limit_value, 'show_value': cleaned}
+        params = {'limit_value': self.limit_value, 'show_value': cleaned[:self.limit_value] if isinstance(cleaned, basestring) else cleaned}
         if self.compare(cleaned, self.limit_value):
             raise ValidationError(
                 self.message % params,
@@ -215,14 +215,12 @@ class MinValueValidator(BaseValidator):
     code = 'min_value'
 
 class MinLengthValidator(BaseValidator):
-    compare = lambda self, a, b: a < b
-    clean   = lambda self, x: len(x)
-    message = _(u'Ensure this value has at least %(limit_value)d characters (it has %(show_value)d).')
+    compare = lambda self, a, b: len(a) < b
+    message = _(u'Ensure this value has at least %(limit_value)d characters (%(show_value)s).')
     code = 'min_length'
 
 class MaxLengthValidator(BaseValidator):
-    compare = lambda self, a, b: a > b
-    clean   = lambda self, x: len(x)
-    message = _(u'Ensure this value has at most %(limit_value)d characters (it has %(show_value)d).')
+    compare = lambda self, a, b: len(a) > b
+    message = _(u'Ensure this value has at most %(limit_value)d characters (%(show_value)s...).')
     code = 'max_length'
 
