PythonのC拡張モジュール内でUnicodeDecodeErrorが発生する場合の対処方法について
環境
Windows 10 Pro 64bit
Python 3.6.1
pyscardというPCSCのモジュールを使用しています。pyscard内で下記のようなエラーメッセージを取得していうる部分があるのですが、ここでUnicodeDecodeErrorが発生しています。
def SCardGetErrorMessage(lErrCode):
"""
SCardGetErrorMessage(long lErrCode) -> ERRORSTRING *
Parameters
----------
lErrCode: long
This function return a human readable text for the given PC/SC error code.
from smartcard.scard import *
...
hresult, response = SCardTransmit(hcard, SCARD_PCI_T0, SELECT + DF_TELECOM)
if hresult != SCARD_S_SUCCESS:
raise error, 'Failed to transmit: ' + SCardGetErrorMessage(hresult)
...
"""
# UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte
return _scard.SCardGetErrorMessage(lErrCode) # <= UnicodeDecodeError
恐らくWindows側がCP932に日本語エラーメッセージを返して、エラーが発生しているような気がします。sys.getdefaulencoding()の値は'utf-8'でした。
import sys
print(sys.getdefaultencoding())
>> utf-8
Windowsのエラーメッセージを英語表記にすることができれば解決できる?そのプロセス内だけ、英語表記に変えれると望ましいのですが。Python側で何か対処方法があれば一番ありがたいです。