diff --git a/Lib/os.py b/Lib/os.py
index e47ec99..2987cfc 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -420,12 +420,12 @@
             self.unsetenv = unsetenv
             self.data = data = {}
             for key, value in environ.items():
-                data[keymap(key)] = value
+                data[keymap(key)] = str(value)
         def __getitem__(self, key):
             return self.data[self.keymap(key)]
-        def __setitem__(self, key, item):
-            self.putenv(key, item)
-            self.data[self.keymap(key)] = item
+        def __setitem__(self, key, value):
+            self.putenv(key, str(value))
+            self.data[self.keymap(key)] = str(value)
         def __delitem__(self, key):
             self.unsetenv(key)
             del self.data[self.keymap(key)]
@@ -438,7 +438,7 @@
             return dict(self)
         def setdefault(self, key, value):
             if key not in self:
-                self[key] = value
+                self[key] = str(value)
             return self[key]
 
     try:
@@ -456,9 +456,9 @@
         __all__.append("unsetenv")
 
     if name in ('os2', 'nt'): # Where Env Var Names Must Be UPPERCASE
-        _keymap = lambda key: key.upper()
+        _keymap = lambda key: str(key.upper())
     else:  # Where Env Var Names Can Be Mixed Case
-        _keymap = lambda key: key
+        _keymap = lambda key: str(key)
 
     environ = _Environ(environ, _keymap, _putenv, _unsetenv)
 
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 2ddda8a..1f6499c 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -273,6 +273,13 @@
             value = os.popen("/bin/sh -c 'echo $HELLO'").read().strip()
             self.assertEquals(value, "World")
 
+    # Verify environ keys and values from the OS are of the
+    # correct str type.
+    def test_keyvalue_types(self):
+        for key, val in os.environ.items():
+            self.assertEquals(type(key), str)
+            self.assertEquals(type(val), str)
+
 class WalkTests(unittest.TestCase):
     """Tests for os.walk()."""
 
