私はDjango v1.11とPythonで作業しています。ファイルをアップロードして解析しようとしています。ファイルには奇妙なエンコーディングがあるので、私は最初にテストスクリプトを書いて、そのファイルがutf-16エンコーディングを使用していることを発見しました。 (私はジャンゴの外で使用)、テストスクリプト私が使用して:Django/Python - FILEアップロードをデコードできません
inputFile = open(inputFilePath, 'rt', encoding='utf-16')
をジャンゴを使用している場合、私はトラブルデコードを行うが生じています。私のviews.pyでは私が使用します。ここでは
def doStuff(specFilePath):
for line in specFilePath:
print(line)
私はエンコードされますテキスト:
b'\xff\xfe#\x00#\x00B\x00L\x00O\x00C\x00K\x00S\x00=\x00 \x006\x00\r'
b'\x00\n'
b'\x00P\x00l\x00a\x00t\x00e\x00:\x00\t\x00e\x001\x00\t\x001\x00.\x003\x00\t\x00P\x00l\x00a\x00t\x00e\x00F\x00o\x00r\x00m\x00a\x00t\x00\t\x00E\x00n\x00d\x00p\x00o\x00i\x00n\x00t\x00\t\x00A\x00b\x00s\x00o\x00r\x00b\x00a\x00n\x00c\x00e\x00\t\x00R\x00a\x00w\x00\t\x00F\x00A\x00L\x00S\x00E\x00\t\x001\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x002\x00\t\x002\x006\x000\x00 \x002\x008\x000\x00 \x00\t\x001\x00\t\x002\x004\x00\t\x003\x008\x004\x00\t\x001\x00\t\x001\x006\x00\t\x00\t\x00\r'
...
When putting in
line = line.decode(encoding='latin1')
b'\xff\xfe#\x00#\x00B\x00L\x00O\x00C\x00K\x00S\x00=\x00 \x006\x00\r'
b'\x00\n'
b'\x00P\x00l\x00a\x00t\x00e\x00:\x00\t\x00e\x001\x00\t\x001\x00.\x003\x00\t\x00P\x00l\x00a\x00t\x00e\x00F\x00o\x00r\x00m\x00a\x00t\x00\t\x00E\x00n\x00d\x00p\x00o\x00i\x00n\x00t\x00\t\x00A\x00b\x00s\x00o\x00r\x00b\x00a\x00n\x00c\x00e\x00\t\x00R\x00a\x00w\x00\t\x00F\x00A\x00L\x00S\x00E\x00\t\x001\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x002\x00\t\x002\x006\x000\x00 \x002\x008\x000\x00 \x00\t\x001\x00\t\x002\x004\x00\t\x003\x008\x004\x00\t\x001\x00\t\x001\x006\x00\t\x00\t\x00\r'
...
が
に入れる簡単な方法になりif "specFile" in request.FILES:
specFilePath = request.FILES['specFile']
if(request.POST['specType'] == 'Absorbance'):
doStuff(specFilePath)
line = line.decode(encoding='utf-16')
エラーメッセージが表示されます。 UnicodeDecodeError:'utf-16-le' codec can't decode byte 0x0d in position 24: truncated data
ここからどこに行くのかわかりません。デコードを行う他の方法はありますか? また、この質問の誤りや貧弱な表現についてはお詫び申し上げます。これは私の最初のStack Overflowに関する質問です。Django/PythonはDrug Discoveryプラットフォーム開発の科学的側面で私が使っているツールです。
あなたのファイルを行に分割するのは、それがUTF16であることに気づいていませんし、ここでも意味のない1バイト文字に分割しています。あなたは何とかDjangoにファイルをUTF16とみなす必要があります。申し訳ありませんが、それは私の経験外のビットです。 – jasonharper
これは 'utf-16'でエンコードされていますか? –