Open files in binary mode.
diff --git a/Lib/urllib.py b/Lib/urllib.py
index 49c9032..e57311b 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -183,7 +183,7 @@
 		result = filename, headers
 		if self.tempcache is not None:
 			self.tempcache[url] = result
-		tfp = open(filename, 'w')
+		tfp = open(filename, 'wb')
 		bs = 1024*8
 		block = fp.read(bs)
 		while block:
@@ -284,12 +284,12 @@
 	def open_local_file(self, url):
 		host, file = splithost(url)
 		if not host:
-			return addinfourl(open(url2pathname(file), 'r'), noheaders(), 'file:'+file)
+			return addinfourl(open(url2pathname(file), 'rb'), noheaders(), 'file:'+file)
 		host, port = splitport(host)
 		if not port and socket.gethostbyname(host) in (
 			  localhost(), thishost()):
 			file = unquote(file)
-			return addinfourl(open(url2pathname(file), 'r'), noheaders(), 'file:'+file)
+			return addinfourl(open(url2pathname(file), 'rb'), noheaders(), 'file:'+file)
 		raise IOError, ('local file error', 'not on local host')
 
 	# Use FTP protocol
@@ -785,7 +785,7 @@
 				print '======'
 				for k in h.keys(): print k + ':', h[k]
 				print '======'
-			fp = open(fn, 'r')
+			fp = open(fn, 'rb')
 			data = fp.read()
 			del fp
 			print regsub.gsub('\r', '', data)