2

私は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への呼び出しを印刷しようとするか、フロントエンドから呼び出してテンプレートに表示すると、このエラーが発生します。

他に必要な情報があれば、問題なく提供できます。

ありがとう。

4

0 に答える 0