vim對大檔案進行編碼格式轉換

2021-09-05 01:23:24 字數 1453 閱讀 2622

處理資料集的時候碰到了中文亂碼的問題,由於檔案較大(4gb),用glogg開啟,glogg只支援utf-8和ascll編碼,中文顯示為亂碼。只能換成資料集中另乙個小一點的檔案,用notepad++開啟,檢視其編碼方式,顯示為gb2312。

嘗試用linux iconv命令對編碼方式進行轉換:

iconv -f gb2312 -t utf-8 file1.txt >file2.txt
報錯:

iconv: 未知 87 處的非法輸入序列
換成vim以指定的編碼格式開啟檔案:

vim file1.txt -c "e ++enc=gb2312"
檔案可以開啟,大部分中文正常顯示,但仍有一些亂碼存在:

"file1.txt" [已轉換][第 8 行轉換錯誤][dos]
於是又嘗試用python處理。

def readbyline(filepath):

filehandle = open(filepath,'r')

i = 0

for line in filehandle:

i += 1

line_uni = unicode(line, "gb2312")

print '原文: ', line

print 'unicode: ', line_uni

if i == 100:

break

依然報錯:

unicodedecodeerror: 'gb2312' codec can't decode bytes in position 10-11: illegal multibyte sequence
在網上找到別人的解決方法:

解決python unicodedecodeerror: 'gb2312' codec can't decode問題( )

將"gb2312"換成"gbk",最終所有中文(包括繁體字、特殊字元)都能正常顯示。

鑑於python讀寫處理大檔案速度較慢,依然選擇linux命令。

vim file1.txt -c "e ++enc=gbk"
終於可以正常開啟,只需要修改檔案的編碼方式並儲存即可:

:set fileencoding=utf-8

:set wq!

用head file1.txt檢視,全部正常顯示。

再嘗試iconv命令:

iconv -f gbk -t utf-8 file1.txt >file2.txt
也能夠快速並正確轉換。 

糾結了這麼久,問題出在notepad++顯示的檔案編碼格式有問題,目前尚未找到比較方便的檢視檔案編碼的軟體或方法。

超大檔案編碼轉換

最近導資料,從gbk轉到utf8,檔案太大了120多m,普通編輯器無法開啟 網上有人用vim轉換,成功率也很高,iconv有時候不能轉換 如開啟windows中以ansi儲存的檔案 vim file.txt c e enc gb18030 在vim中直接進行轉換檔案編碼,比如將乙個檔案轉換成utf ...

Linux檢視檔案編碼格式及檔案編碼轉換

如果你需要在linux 中操作windows下的檔案 那麼你可能會經常遇到檔案 編碼 轉換的問題。windows中預設的檔案 格式是gbk gb2312 而linux 一般都是utf 8。下面介紹一下,在linux 中如何檢視 檔案 的編碼 及如何進行對檔案 進行編碼 轉換。檢視 檔案 編碼 在li...

Linux檢視檔案編碼格式及檔案編碼轉換

如果你需要在linux 中操作windows下的檔案,那麼你可能會經常遇到檔案編碼轉換的問題。windows中預設的檔案格式是gbk gb2312 而linux一般都是utf 8。下面介紹一下,在linux中如何檢視檔案的編碼及如何進行對檔案進行編碼轉換。檢視檔案編碼 在linux中檢視檔案編碼可以...