-1

私は、word2vecとのバイナリファイルを生成している私のGCSバケットに結果.binファイルを保存し、そして私のApp Engineアプリケーションハンドラーに次のコードを実行しました: content = gcs_file.read().encode("utf-8") UnicodeDecodeError: 'ascii' codec can't decode byte 0xf6 in position 15: ordinal not in range(128)Google App Engineに保存されているバイナリファイルを開く方法は?

gcs_file = gcs.open(filename, 'r') 
    content = gcs_file.read().encode("utf-8") 
    """ call word2vec with content so it doesn't need to read a file itself, as we don't have a filesystem in GAE """ 

は、このエラーで失敗します

gcs_file.read()、またはgcs_file.read().decode("utf-8").encode("utf-8")を試しても、同様のデコードエラーが発生します。

GCSからバイナリファイルを読み取る方法に関するアイデアはありますか?それがバイナリである場合

おかげ

+1

なぜエンコードを呼びますか?バイトの場合、既にエンコードされています。 –

+1

あなたが*知っていないバイトであれば*それは 'png'ならば確かに**ではありません**すでに文字エンコーディングでエンコードされています。それが 'Base64'や' UUE'に変換されていない限り、私はコードと質問から**本当にそうではありません。 –

答えて

0

は、それはUTF-8が何であるかである文字エンコーディングを、反映されません。 UTF-8は、文字セット(Stringデータ)のUnicode仕様の1つの可能なバイナリエンコーディングに過ぎません。あなたは戻って、UTF-8ASCIIが何を表しているか、どのように使用されているのかを読み上げる必要があります。

特定のエンコードでエンコードされたテキストデータでない場合は、魔法のようにdecodeになるとは限らないため、そのエラーが発生しています。 can't decode byte 0xf6 in position 15は有効なASCII値ではありません。

+0

十分に公正です。私を混乱させ、あなたの答えから学んだことは、バイナリファイルがすでにエンコードされていることです。ありがとう。 – user2779653

関連する問題