私はpymssqlでこの問題に遭遇しました。エンコーディングが gbk の mssql データベースがありますが、pymssql はこれをサポートできないようです。「gbk」を文字セットとして使用するOperationalError 20017
と、役に立たないメッセージがスローされ、「cp936」を試すとクラッシュします...
「UTF-8」で正常に接続でき、でクエリを実行できますsqlstr.encode('utf-8')
。問題は、Unicode 以外のコンテンツを含む Unicode 文字列を返すことです。
たとえば、1 つのクエリが Unicode 文字列u'Port 26 \xb5\xe7'
を返しますが、これは間違っています。これは Unicode 文字列ではなく、まったくデコード/エンコードできません。'Port 26 \xb5\xe7'
(python 2.x の場合) である必要があるため、gbk でデコードできます。そして正しい結果を得る
私の仕事は、ユニコード文字列から生のコンテンツを抽出することです。まあ、文字列の切り捨てを使用して repr からこれを実行してから、eval を呼び出すことができると思いますが、もっと Pythonic な方法があるのではないかと思っています。