diff --git a/release-notes/VERSION b/release-notes/VERSION
index 55de853..eb49238 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -17,6 +17,7 @@
    (reported by Ittai Z)
   * [JACKSON-779]: Problems with multi-byte UTF-8 chars in JSON comments
    (reported by Alexander K)
+  * [JACKSON-789]: Add support for 'java.nio.charset.Charset'
 
 ------------------------------------------------------------------------
 === History: ===
diff --git a/src/mapper/java/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java b/src/mapper/java/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java
index d3a5e39..ce53dfc 100644
--- a/src/mapper/java/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java
+++ b/src/mapper/java/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java
@@ -4,6 +4,7 @@
 import java.net.InetAddress;
 import java.net.URI;
 import java.net.URL;
+import java.nio.charset.Charset;
 import java.util.*;
 import java.util.regex.Pattern;
 
@@ -39,6 +40,8 @@
         // 1.8:
         all.add(new InetAddressDeserializer());
         all.add(new TimeZoneDeserializer());
+        // 1.9
+        all.add(new CharsetDeserializer());
 
         return all;
     }
@@ -228,6 +231,20 @@
         }
     }
 
+    // [JACKSON-789] (since 1.9.5)
+    protected static class CharsetDeserializer
+        extends FromStringDeserializer<Charset>
+    {
+        public CharsetDeserializer() { super(Charset.class); }
+    
+        @Override
+	    protected Charset _deserialize(String value, DeserializationContext ctxt)
+            throws IOException
+	    {
+		return Charset.forName(value);
+	    }
+    }
+
     /**
      * As per [JACKSON-522], also need special handling for InetAddress...
      * 
diff --git a/src/mapper/java/org/codehaus/jackson/map/ser/BasicSerializerFactory.java b/src/mapper/java/org/codehaus/jackson/map/ser/BasicSerializerFactory.java
index 0ad25bc..e36e23c 100644
--- a/src/mapper/java/org/codehaus/jackson/map/ser/BasicSerializerFactory.java
+++ b/src/mapper/java/org/codehaus/jackson/map/ser/BasicSerializerFactory.java
@@ -295,6 +295,10 @@
         if (TimeZone.class.isAssignableFrom(raw)) {
             return TimeZoneSerializer.instance;
         }
+        // and yet one more [JACKSON-789]
+        if (java.nio.charset.Charset.class.isAssignableFrom(raw)) {
+            return ToStringSerializer.instance;
+        }
         
         // Then check for optional/external serializers [JACKSON-386]
         JsonSerializer<?> ser = optionalHandlers.findSerializer(config, type);
diff --git a/src/test/org/codehaus/jackson/map/deser/TestJdkTypes.java b/src/test/org/codehaus/jackson/map/deser/TestJdkTypes.java
index c91421b..447a377 100644
--- a/src/test/org/codehaus/jackson/map/deser/TestJdkTypes.java
+++ b/src/test/org/codehaus/jackson/map/deser/TestJdkTypes.java
@@ -2,6 +2,7 @@
 
 import java.io.*;
 import java.net.*;
+import java.nio.charset.Charset;
 import java.util.Currency;
 import java.util.List;
 import java.util.Locale;
@@ -317,4 +318,11 @@
         assertTrue(b.primitive);
         assertEquals(Boolean.TRUE, b.ctor);
     }
+
+    // [JACKSON-789]
+    public void testCharset() throws Exception
+    {
+        Charset UTF8 = Charset.forName("UTF-8");
+        assertSame(UTF8, mapper.readValue(quote("UTF-8"), Charset.class));
+    }
 }
diff --git a/src/test/org/codehaus/jackson/map/ser/TestJdkTypes.java b/src/test/org/codehaus/jackson/map/ser/TestJdkTypes.java
index ad70631..4739fc5 100644
--- a/src/test/org/codehaus/jackson/map/ser/TestJdkTypes.java
+++ b/src/test/org/codehaus/jackson/map/ser/TestJdkTypes.java
@@ -2,6 +2,7 @@
 
 import java.io.*;
 import java.net.InetAddress;
+import java.nio.charset.Charset;
 import java.util.*;
 import java.util.regex.Pattern;
 
@@ -70,4 +71,9 @@
         assertEquals(quote("void"), mapper.writeValueAsString(Void.TYPE));
     }
 
+   // [JACKSON-789]
+   public void testCharset() throws IOException {
+        ObjectMapper mapper = new ObjectMapper();
+        assertEquals(quote("UTF-8"), mapper.writeValueAsString(Charset.forName("UTF-8")));
+    }
 }
