diff --git a/.project b/.project
deleted file mode 100644
index fb9ffc1..0000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>tcutils</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.python.pydev.PyDevBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.python.pydev.pythonNature</nature>
-	</natures>
-</projectDescription>
diff --git a/.pydevproject b/.pydevproject
deleted file mode 100644
index a270ffe..0000000
--- a/.pydevproject
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?eclipse-pydev version="1.0"?>
-
-<pydev_project>
-<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
-<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.6</pydev_property>
-<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
-<path>/tcutils/src</path>
-</pydev_pathproperty>
-</pydev_project>
diff --git a/tcutils/vcprojred.py b/tcutils/vcprojred.py
index 7304160..71f0509 100644
--- a/tcutils/vcprojred.py
+++ b/tcutils/vcprojred.py
@@ -18,7 +18,15 @@
         
     def run(self,argv):
         self._parse_opt(argv)
-        self._run_dir(self.options.solutiondir)
+        if isinstance(self.options.solutiondir,str):
+            soludir = self.options.solutiondir.decode('gbk')
+        else:
+            soludir = self.options.solutiondir
+
+        if isinstance(self.options.outputdir,str):
+            self.options.outputdir = self.options.outputdir.decode('gbk')
+
+        self._run_dir(soludir)
     
     def error(self,msg,exitcode = 1):
         print "Error: %s" % msg
@@ -76,12 +84,14 @@
             f.close()
     
     def _deal_proj(self,projfile):
+        if isinstance(projfile,str):
+            projfile = projfile.decode('gbk')
         file_name = os.path.basename(projfile)
         exts = os.path.splitext(file_name)
         if exts[-1] not in ['.vcproj']:
             return None
         # parse project 
-        print u"处理工程 [%s]" %  projfile
+        print u"处理工程 [%s]" %  unicode(projfile)
 
         prjdom = xml_encoding = None
         try:
diff --git a/vcprojred.py b/vcprojred.py
index 7133d73..6d31f49 100644
--- a/vcprojred.py
+++ b/vcprojred.py
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: utf-8
 from tcutils.vcprojred import vcprojred
 import sys
 
