0

顧客が提供する大規模なデータ ファイルを読み取るアプリがあります。いくつかのファイルで完全に動作しますが、今日受け取った 1 つのファイルで次のエラーが発生しています。

ArgumentError: invalid byte sequence in UTF-8

String.match を使用して正規表現パターンを探しています。

ファイルを見ると、動作するものと何も変わらないようです。

アドバイス?

編集: ユーザー名に「xE9」文字があるようです。

4

2 に答える 2

3

@muistooshortの助けを借りて、ファイルをISOモードで開き、1行ずつ読み取り、UTF-8に変換しました。

myfile = File.open( 'thefile.txt', 'r:iso8859-1' )
  while rawline = myfile.gets
  line = rawline.force_encoding( 'utf-8' )
  # proceed...
end
于 2012-12-06T16:39:33.243 に答える
-1

ソリューションを説明する小さなレーキ ジョブ:

task :reencode, [:filename] => [:environment] do |t, args|
  myfile = File.open( args[:filename], 'r:iso8859-1' )
  outfile = File.open( args[:filename] + ".out", "w+" )
  while rawline = myfile.gets
    line = rawline.force_encoding( 'utf-8' )
    outfile.write line
  end 
  outfile.close
end
于 2015-08-17T18:18:00.863 に答える