讀取二進位制檔案的中文亂碼問題

2021-07-07 01:39:17 字數 819 閱讀 2548

問題描述:

在linux下開發的專案,轉移到windows環境,執行後,發現出現中文亂碼。

追根溯源:

逐步debug,發現並非在網路傳輸過程中出現亂碼問題(若是,可通過對requestresponse設定編碼,setcharacterencoding("utf-8")解決),而是在讀取二進位制檔案時,未指定編碼的原因。

專案中使用了datainputstreamreadbyte()方法,按位元組讀取檔案,然後將byte其轉為string。轉換方式:newstring(bytes,0, size),因為沒有指定編碼,可能出現亂碼問題。

解決方案:

通過new string(bytes,0, size, "utf-8"),指定具體的編碼方式,如這裡的"utf-8"。

此外,使用string的另一建構函式:publicstring(bytebytes, charset charset),可實現強制轉碼:

stringstr= new string(str.getbyte("iso8859-1"),"utf-8")。

c c讀取二進位制檔案

因專案需要讀取二進位制檔案,一開始用c 讀取,c 下用的是ifstream類,完整 如下 ifstream in b3dmpath.c str ios in ios binary in.seekg 0,ios end size t filesize in.tellg in.seekg ios beg...

Matlab讀取二進位制檔案

ps bin檔案是二進位制檔案,是檔案格式binary的縮寫。一 檔案的開啟與關閉 1 開啟檔案 在讀寫檔案之前,必須先用fopen函式開啟或建立檔案,並指定對該檔案進行的操作方式。fopen函式的呼叫格式為 fid fopen 檔名,開啟方式 說明 1 fid 用於儲存檔案控制代碼值,如果返回的控...

Python 二進位制檔案讀取

其實對於檔案單純的讀取還是非常好解決的。只要使用如下語句即可把檔案讀取出到變數temp中 如果對open函式的引數mode不熟悉,可以查閱 此處我們需要以二進位制方式讀取該檔案,因此mode rb with open filename,mode rb as file temp file.read f...