通常の方法でアップロードされたファイルがありますform_for
。これにより、コンテンツを取得するためにActionDispatch::Http::UploadedFile
呼び出すことができるparamsハッシュ内のオブジェクトが得られます。.read
ここで、ファイルをXMLドキュメントに埋め込む必要があります。今のところ、XMLを構築するために通常のRuby文字列を使用しています。Rails文字列のデフォルトのエンコーディングはutf-8です。
したがって、エラーが発生Encoding::UndefinedConversionError
します"\x89" from ASCII-8BIT to UTF-8
。
これは、次のファイルで発生します。
what-matters-now-1.pdf:application / octet-stream; charset = binary example.csv:text / plain; charset = utf-8 調査.png:画像/ png; charset = binary
それは起こりません:
my_test.txt:text / plain; charset = us-ascii
エンコーディングを変更しようとしましたが、同じエラーが発生します。
params[:file].read.encode('utf-8')