--- vimcolor.py.orig	2004-10-25 01:07:42.000000000 -0500
+++ vimcolor.py	2006-11-09 11:44:50.000000000 -0600
@@ -175,23 +175,25 @@
 			self.syntaxmap.update(syntaxmap)
 
 	def _build_syntax(self, filepath, filetype=None):
-		import os, tempfile
+		import os, tempfile, codecs
 		self.syntax=[]
 		vstemp=tempfile.mktemp('.vim','mark')
-		open(vstemp,'w').write(VIM_MARK_RC)
+		codecs.open(vstemp,'w','utf-8').write(VIM_MARK_RC)
 		if not os.path.exists(filepath):
 			raise IOError('File "%s" not found'%(filepath))
 		# tempfile to save
 		outtemp=tempfile.mktemp('.xml')
 		# make vim script
 		shtemp=tempfile.mktemp('.vim')
-		sh=open(shtemp,'w')
+		sh=codecs.open(shtemp,'w', 'utf-8')
 		if filetype:
 			filetype=':set filetype=%s\n'%(filetype,)
 		else:
 			filetype=''
 		sh.write(''':filetype on
-%(filetype)s:source %(vstemp)s
+%(filetype)s:set encoding=utf-8
+:source %(vstemp)s
+:set fileencoding=utf-8
 :write! %(outtemp)s
 :qall!
 '''%{'filetype': filetype,
@@ -201,7 +203,7 @@
 		# run colorize
 		os.system("%s %s %s -s %s >/dev/null 2>&1"%(VIM_COMMAND, VIM_OPTIONS, filepath, shtemp))
 		# load stuff and kill files
-		lines=open(outtemp,'r').readlines()
+		lines=codecs.open(outtemp,'r', 'utf-8').readlines()
 		try:
 			os.unlink(shtemp)
 		except:
@@ -260,8 +262,9 @@
 
 	def markString(self, string, extension='.dat', filetype=None):
 		import tempfile
+		import codecs
 		fn=tempfile.mktemp(extension)
-		f=open(fn,'w')
+		f=codecs.open(fn,'w','utf-8')
 		f.write(string)
 		f.close()
 		res=self._mark(fn, filetype)
@@ -339,11 +342,14 @@
 
 if __name__=='__main__':
 	import sys
+	import codecs
+	import traceback
 	if len(sys.argv)>1:
 		try:
-			data=open(sys.argv[1],'r').read()
+			data=codecs.open(sys.argv[1],'r','utf-8').read()
 		except:
 			sys.stderr.write("can't read %s\n"%(sys.argv[1]))
+			traceback.print_exc()
 			sys.exit(1)
 	else:
 		data=TEST
