私はubuntu 11.04でdjangoアプリを実行しており、cythonを使用してCで記述されたサードパーティのAPIを呼び出しています。Cで記述されたAPIのすべてをコンパイルし、Djangoの外部でPythonスクリプトを実行してAPIをテストすると、私はすべての呼び出しが正しく機能するようにします。
API を呼び出すと、3 つのパラメーターが文字列として返されます。
'36'、'029'、'973345'
ただし、django内からAPIを呼び出してフロントエンドに表示しようとすると、エラーが発生します:
Type Error 'utf8' codec can't decode byte 0xd0 in position 0: invalid continuation byte
以下は、c api(ccapi) への API 呼び出しを行うための cython ファイルの内容の例です。
cimport ccapi
def get_params(self):
cdef char municipalityCode_pt[128]
cdef char schoolCode_pt[128]
cdef char transitDistrictCode_pt[128]
return ccapi.get_params(municipalityCode_pt, schoolCode_pt,transitDistrictCode_pt)
動作するサンプル python スクリプトから実行した例は、非常に簡単です。
import ccapilib
print ccapilib.ccapilib()
これにより、値が正しく設定された 3 つのパラメーター ('36'、'029'、'973345') が出力されます。
私のdjangoアプリ内で同じことをしようとすると、次のエラーが発生します:
'utf8' codec can't decode byte 0xd0 in position 0: invalid continuation byte
PythonでAPIへの呼び出しを印刷しようとするか、フロントエンドから呼び出してテンプレートに表示すると、このエラーが発生します。
他に必要な情報があれば、問題なく提供できます。
ありがとう。