2012-12-04 78 views
0

我有一個讀取大客戶提供的數據文件的應用程序。它完美地與幾個,但是,在我今天收到一個文件,它與失敗:如何查找/修復:ArgumentError:UTF-8中的無效字節序列?

ArgumentError: invalid byte sequence in UTF-8 

我使用String.match尋找正則表達式模式。

當我看着文件,沒有什麼看起來不同於那些工作。

建議?

編輯:它看起來像用戶名中有一個'xE9'字符。

+0

你有沒有看任何的頁面的右側的相關問題?嘗試讀一些這些:http://stackoverflow.com/search?q=[ruby]+invalid+byte+sequence –

+0

http://stackoverflow.com/questions/6374756/why-do-i-get-an-無效字節序列在UTF-8錯誤閱讀的文本文件?rq = 1 –

+0

我做到了。至少沒有任何東西適用於我。我只是逐行閱讀一個文本文件。 – n8gard

回答

2

感謝@ muistooshort的幫助,我以ISO模式打開文件,然後逐行讀取,轉換爲UTF-8。

myfile = File.open('thefile.txt', 'r:iso8859-1') 
    while rawline = myfile.gets 
    line = rawline.force_encoding('utf-8') 
    # proceed... 
end 
+0

不是說這是理想的解決方案,但它似乎很簡單,完全解決了我的問題在多個受影響的數據文件。 – n8gard

0

,說明了解決小耙作業:

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 
相關問題