

**環境**  
Windows 10 Pro 64bit  
Python 3.6.1

pyscardというPCSCのモジュールを使用しています。pyscard内で下記のようなエラーメッセージを取得していうる部分があるのですが、ここでUnicodeDecodeErrorが発生しています。

[code]

    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
    
[/code]

恐らくWindows側がCP932に日本語エラーメッセージを返して、エラーが発生しているような気がします。sys.getdefaulencoding()の値は'utf-8'でした。

[code]

    import sys
    
    print(sys.getdefaultencoding())
    >> utf-8
    
[/code]

Windowsのエラーメッセージを英語表記にすることができれば解決できる？そのプロセス内だけ、英語表記に変えれると望ましいのですが。Python側で何か対処方法があれば一番ありがたいです。


CC BY-SA 3.0
2017-06-19T08:15:38.450
35710
2017-06-19T08:15:38.450
17238
question
python
PythonのC拡張モジュール内でUnicodeDecodeErrorが発生する場合の対処方法について