Fixing more unicode-related issues.
This is getting really tedious really fast.
This commit is contained in:
parent
50b3b1efd4
commit
bf0a499093
@ -27,6 +27,7 @@ import stat
|
||||
import json
|
||||
from distutils.spawn import find_executable
|
||||
import subprocess
|
||||
import collections
|
||||
|
||||
WIN_PYTHON27_PATH = 'C:\python27\pythonw.exe'
|
||||
WIN_PYTHON26_PATH = 'C:\python26\pythonw.exe'
|
||||
@ -40,6 +41,7 @@ def SanitizeQuery( query ):
|
||||
return query.strip()
|
||||
|
||||
|
||||
# Given an object, returns a str object that's utf-8 encoded.
|
||||
def ToUtf8IfNeeded( value ):
|
||||
if isinstance( value, unicode ):
|
||||
return value.encode( 'utf8' )
|
||||
@ -48,8 +50,26 @@ def ToUtf8IfNeeded( value ):
|
||||
return str( value )
|
||||
|
||||
|
||||
# Recurses through the object if it's a dict/iterable and converts all the
|
||||
# unicode objects to utf-8 strings.
|
||||
def RecursiveEncodeUnicodeToUtf8( value ):
|
||||
if isinstance( value, unicode ):
|
||||
return value.encode( 'utf8' )
|
||||
if isinstance( value, str ):
|
||||
return value
|
||||
elif isinstance( value, collections.Mapping ):
|
||||
return dict( map( RecursiveEncodeUnicodeToUtf8, value.iteritems() ) )
|
||||
elif isinstance( value, collections.Iterable ):
|
||||
return type( value )( map( RecursiveEncodeUnicodeToUtf8, value ) )
|
||||
else:
|
||||
return value
|
||||
|
||||
|
||||
def ToUtf8Json( data ):
|
||||
return ToUtf8IfNeeded( json.dumps( data, ensure_ascii = False ) )
|
||||
return json.dumps( RecursiveEncodeUnicodeToUtf8( data ),
|
||||
ensure_ascii = False,
|
||||
# This is the encoding of INPUT str data
|
||||
encoding = 'utf-8' )
|
||||
|
||||
|
||||
def PathToTempDir():
|
||||
|
Loading…
Reference in New Issue
Block a user