From 1c27ec42363515bda97468dccf57a01c6e66d01e Mon Sep 17 00:00:00 2001 From: "Fan, ZhijuX" Date: Fri, 29 Mar 2019 13:53:40 +0800 Subject: BaseTools:Coding problems caused by special characters BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=1670 During BaseTools compiling under Chinese or Japanese language Windows, python exception occurring. UnicodeDecodeError: 'ascii' codec can't decode byte 0xbd in position 3528: ordinal not in range(128) Cc: Bob Feng Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Zhiju.Fan Reviewed-by: Bob Feng --- BaseTools/Source/Python/Capsule/GenerateCapsule.py | 8 ++++---- BaseTools/Source/Python/Common/Misc.py | 2 +- BaseTools/Source/Python/Pkcs7Sign/Pkcs7Sign.py | 2 +- .../Source/Python/Rsa2048Sha256Sign/Rsa2048Sha256GenerateKeys.py | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) (limited to 'BaseTools/Source/Python') diff --git a/BaseTools/Source/Python/Capsule/GenerateCapsule.py b/BaseTools/Source/Python/Capsule/GenerateCapsule.py index 7b08918..5ce5dae 100644 --- a/BaseTools/Source/Python/Capsule/GenerateCapsule.py +++ b/BaseTools/Source/Python/Capsule/GenerateCapsule.py @@ -94,7 +94,7 @@ def SignPayloadSignTool (Payload, ToolPath, PfxFile): if Process.returncode != 0: shutil.rmtree (TempDirectoryName) - print (Result[1].decode()) + print (Result[1].decode(encoding='utf-8', errors='ignore')) raise ValueError ('GenerateCapsule: error: signtool failed.') # @@ -132,12 +132,12 @@ def SignPayloadOpenSsl (Payload, ToolPath, SignerPrivateCertFile, OtherPublicCer try: Process = subprocess.Popen (Command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True) Result = Process.communicate(input = Payload) - Signature = Result[0] + Signature = Result[0].decode(encoding='utf-8', errors='ignore') except: raise ValueError ('GenerateCapsule: error: can not run openssl.') if Process.returncode != 0: - print (Result[1].decode()) + print (Result[1].decode(encoding='utf-8', errors='ignore')) raise ValueError ('GenerateCapsule: error: openssl failed.') return Signature @@ -186,7 +186,7 @@ def VerifyPayloadOpenSsl (Payload, CertData, ToolPath, SignerPrivateCertFile, Ot if Process.returncode != 0: shutil.rmtree (TempDirectoryName) - print (Result[1].decode()) + print (Result[1].decode(encoding='utf-8', errors='ignore')) raise ValueError ('GenerateCapsule: error: openssl failed.') shutil.rmtree (TempDirectoryName) diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py index c7daf54..47f8e45 100644 --- a/BaseTools/Source/Python/Common/Misc.py +++ b/BaseTools/Source/Python/Common/Misc.py @@ -1032,7 +1032,7 @@ def ParseFieldValue (Value): p.stderr.close() if err: raise BadExpression("DevicePath: %s" % str(err)) - out = out.decode() + out = out.decode(encoding='utf-8', errors='ignore') Size = len(out.split()) out = ','.join(out.split()) return '{' + out + '}', Size diff --git a/BaseTools/Source/Python/Pkcs7Sign/Pkcs7Sign.py b/BaseTools/Source/Python/Pkcs7Sign/Pkcs7Sign.py index 003f052..706bf28 100644 --- a/BaseTools/Source/Python/Pkcs7Sign/Pkcs7Sign.py +++ b/BaseTools/Source/Python/Pkcs7Sign/Pkcs7Sign.py @@ -122,7 +122,7 @@ if __name__ == '__main__': if Process.returncode != 0: print('ERROR: Open SSL command not available. Please verify PATH or set OPENSSL_PATH') sys.exit(Process.returncode) - print(Version[0].decode()) + print(Version[0].decode(encoding='utf-8', errors='ignore')) # # Read input file into a buffer and save input filename diff --git a/BaseTools/Source/Python/Rsa2048Sha256Sign/Rsa2048Sha256GenerateKeys.py b/BaseTools/Source/Python/Rsa2048Sha256Sign/Rsa2048Sha256GenerateKeys.py index c0b661d..3cc14e3 100644 --- a/BaseTools/Source/Python/Rsa2048Sha256Sign/Rsa2048Sha256GenerateKeys.py +++ b/BaseTools/Source/Python/Rsa2048Sha256Sign/Rsa2048Sha256GenerateKeys.py @@ -84,7 +84,7 @@ if __name__ == '__main__': if Process.returncode != 0: print('ERROR: Open SSL command not available. Please verify PATH or set OPENSSL_PATH') sys.exit(Process.returncode) - print(Version[0].decode()) + print(Version[0].decode(encoding='utf-8', errors='ignore')) args.PemFileName = [] @@ -125,7 +125,7 @@ if __name__ == '__main__': # Extract public key from private key into STDOUT # Process = subprocess.Popen('%s rsa -in %s -modulus -noout' % (OpenSslCommand, Item), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) - PublicKeyHexString = Process.communicate()[0].split(b'=')[1].strip() + PublicKeyHexString = Process.communicate()[0].decode(encoding='utf-8', errors='ignore').split(b'=')[1].strip() if Process.returncode != 0: print('ERROR: Unable to extract public key from private key') sys.exit(Process.returncode) @@ -138,7 +138,7 @@ if __name__ == '__main__': # Process = subprocess.Popen('%s dgst -sha256 -binary' % (OpenSslCommand), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) Process.stdin.write (PublicKey) - PublicKeyHash = PublicKeyHash + Process.communicate()[0] + PublicKeyHash = PublicKeyHash + Process.communicate()[0].decode(encoding='utf-8', errors='ignore') if Process.returncode != 0: print('ERROR: Unable to extract SHA 256 hash of public key') sys.exit(Process.returncode) -- cgit v1.1