5959from lib .core .exception import sqlmapSyntaxException
6060from lib .core .optiondict import optDict
6161from lib .core .settings import INFERENCE_UNKNOWN_CHAR
62+ from lib .core .settings import UNICODE_ENCODING
6263from lib .core .settings import DESCRIPTION
6364from lib .core .settings import IS_WIN
6465from lib .core .settings import PLATFORM
@@ -99,7 +100,7 @@ def write(self, fp):
99100 fp .write ("[%s]\n " % DEFAULTSECT )
100101
101102 for (key , value ) in self ._defaults .items ():
102- fp .write ("%s = %s\n " % (key , getUnicode (value , conf . dataEncoding ).replace ('\n ' , '\n \t ' )))
103+ fp .write ("%s = %s\n " % (key , getUnicode (value , UNICODE_ENCODING ).replace ('\n ' , '\n \t ' )))
103104
104105 fp .write ("\n " )
105106
@@ -111,7 +112,7 @@ def write(self, fp):
111112 if value is None :
112113 fp .write ("%s\n " % (key ))
113114 else :
114- fp .write ("%s = %s\n " % (key , getUnicode (value , conf . dataEncoding ).replace ('\n ' , '\n \t ' )))
115+ fp .write ("%s = %s\n " % (key , getUnicode (value , UNICODE_ENCODING ).replace ('\n ' , '\n \t ' )))
115116
116117 fp .write ("\n " )
117118
@@ -584,9 +585,9 @@ def dataToStdout(data, forceOutput=False):
584585 if not ('threadException' in kb and kb .threadException ):
585586 if forceOutput or (conf .verbose > 0 ) and not getCurrentThreadData ().disableStdOut :
586587 try :
587- sys .stdout .write (data )
588- except UnicodeEncodeError :
589- sys .stdout .write (data .encode (conf . dataEncoding ))
588+ sys .stdout .write (data . encode ( sys . stdout . encoding ) )
589+ except :
590+ sys .stdout .write (data .encode (UNICODE_ENCODING , errors = "replace" ))
590591 finally :
591592 sys .stdout .flush ()
592593
@@ -660,15 +661,15 @@ def readInput(message, default=None):
660661 message += " "
661662
662663 if conf .batch and default :
663- infoMsg = "%s%s" % (message , getUnicode (default , conf . dataEncoding ))
664+ infoMsg = "%s%s" % (message , getUnicode (default , UNICODE_ENCODING ))
664665 logger .info (infoMsg )
665666
666667 debugMsg = "used the default behaviour, running in batch mode"
667668 logger .debug (debugMsg )
668669
669670 data = default
670671 else :
671- data = raw_input (message .encode (sys .stdout .encoding or conf . dataEncoding ))
672+ data = raw_input (message .encode (sys .stdout .encoding or UNICODE_ENCODING ))
672673
673674 if not data :
674675 data = default
@@ -1438,7 +1439,7 @@ def readCachedFileContent(filename, mode='rb'):
14381439
14391440 if filename not in kb .cache .content :
14401441 checkFile (filename )
1441- xfile = codecs .open (filename , mode , conf . dataEncoding )
1442+ xfile = codecs .open (filename , mode , UNICODE_ENCODING )
14421443 content = xfile .read ()
14431444 kb .cache .content [filename ] = content
14441445 xfile .close ()
@@ -1450,7 +1451,7 @@ def readCachedFileContent(filename, mode='rb'):
14501451def readXmlFile (xmlFile ):
14511452 checkFile (xmlFile )
14521453
1453- xfile = codecs .open (xmlFile , 'r' , conf . dataEncoding )
1454+ xfile = codecs .open (xmlFile , 'r' , UNICODE_ENCODING )
14541455 retVal = minidom .parse (xfile ).documentElement
14551456
14561457 xfile .close ()
@@ -1502,7 +1503,7 @@ def initCommonOutputs():
15021503 kb .commonOutputs = {}
15031504 key = None
15041505
1505- cfile = codecs .open (paths .COMMON_OUTPUTS , 'r' , conf . dataEncoding )
1506+ cfile = codecs .open (paths .COMMON_OUTPUTS , 'r' , UNICODE_ENCODING )
15061507
15071508 for line in cfile .readlines (): # xreadlines doesn't return unicode strings when codec.open() is used
15081509 if line .find ('#' ) != - 1 :
@@ -1528,7 +1529,7 @@ def getFileItems(filename, commentPrefix='#', unicode_=True, lowercase=False, un
15281529 checkFile (filename )
15291530
15301531 if unicode_ :
1531- ifile = codecs .open (filename , 'r' , conf . dataEncoding )
1532+ ifile = codecs .open (filename , 'r' , UNICODE_ENCODING )
15321533 else :
15331534 ifile = open (filename , 'r' )
15341535
@@ -1683,7 +1684,7 @@ def getUnicode(value, encoding=None):
16831684 if isinstance (value , unicode ):
16841685 return value
16851686 elif isinstance (value , basestring ):
1686- return unicode (value , encoding or conf . dataEncoding , errors = "replace" )
1687+ return unicode (value , encoding or UNICODE_ENCODING , errors = "replace" )
16871688 else :
16881689 return unicode (value ) # encoding ignored for non-basestring instances
16891690
@@ -2260,7 +2261,7 @@ def openFile(filename, mode='r'):
22602261 """
22612262
22622263 try :
2263- return codecs .open (filename , mode , conf . dataEncoding )
2264+ return codecs .open (filename , mode , UNICODE_ENCODING )
22642265 except IOError :
22652266 errMsg = "there has been a file opening error for filename '%s'. " % filename
22662267 errMsg += "Please check %s permissions on a file " % ("write" if \
0 commit comments