1

アップロード *.txt ファイルを解析して、インポート DB 情報を取得してみます。しかし、保存する前に、utf-8 形式で tring を取得しようとします。私がそれをすると、エラーが発生します:

"\xDE" from ASCII-8BIT to UTF-8

最初のファイル文字

Import data \xDE\xE4\xE5

解析コードの前

# encoding: utf-8
require "iconv"

class HandlerController < ApplicationController

    def add_report
        utf8_format = "UTF-8"
        file_data = params[:import_file].tempfile.read.encode(utf8_format)
    end
end

PSまた、それを試してみましiconvたが、役に立ちませんでした

4

1 に答える 1

3

文字列を正常に変換する前に、有効なコンテンツ (および入出力用の互換性のある文字) を含む既知のエンコーディングから開始する必要があります。

ASCII-8BITUnicode 互換の文字を値に割り当てません。Unicode128..255に変換することはできません。

あなたが言うように、入力はテキストである可能性がありますが、最初は他のエンコーディングである可能性があります。("Latin-1") は非常に一般的なエンコーディングであると想定することから始めることができISO-8859-1ますが、他の手がかりがあるか、ファイルに含まれる文字がわかっている場合は、他のものを試す必要があります。

次のようなことを試してみることをお勧めします。

file_data = params[:import_file].tempfile.read.force_encoding('ISO-8859-1')
utf8_file_data = file_data.encode(utf8_format)

これはおそらくエラーにはなりませんが、「ISO-8859-1」での私の推測が間違っていると、残念ながら意味不明になります。

于 2013-11-10T19:28:37.833 に答える