Linux Windows 下字元編碼轉換

2021-07-02 14:03:01 字數 1810 閱讀 3388

1、簡介

最近的乙個小專案,涉及到字元編碼的轉換問題,比如windows下的多位元組編碼資料到linux下後會是亂碼,因為windows下多位元組編碼使用的是gb2312,而linux下預設則使用的utf-8,下面的類就提供了該轉換的實現!

2、使用簡介

2.1 我如何知道該類能實現哪些編碼之間的轉換?

因為在linux上用到了iconv,所以要想知道該類支援哪些編碼之間的轉換,可以在終端中使用如下命令來獲取:

iconv -l > ./iconv.txt
該命令會在當前目錄下生成iconv.txt檔案,這裡面就是當前系統支援的所有編碼!

2.2 我如何知道亂碼的資料是那種編碼?要轉換成哪個目標編碼才能正常顯示資料?

對於這個問題,我個人使用了乙個笨辦法,首先,你可以編寫**將你的亂碼資料寫入到文字檔案中,然後利用sublime text 這個檔案編輯器,用這個文字編輯器開啟該文字,它會自動檢測編碼並轉換成utf-8編碼,當然,這需要你安裝了converttoutf8這個外掛程式!然後你只需要注意它的狀態列,狀態列中會顯示編碼資訊,如下:

如果你還有更好的方法,可以分享給我!

3、程式**

#ifndef codeconverter_h

#define codeconverter_h

#include

#ifdef win32

#include

#else

#include

#endif

class

codeconverter

~codeconverter()

bool initialize(const

char *psztocode, const

char *pszfromcode);

size_t convert(char* inbuf, size_t inbytesleft, char* outbuf, size_t outbyteslen);

};#endif // codeconverter_h

#include "codeconverter.h"

#include

#include

#include

#include

bool codeconverter::initialize(const char* psztocode, const char* pszfromcode)

#endif

return

true;

}size_t codeconverter:: convert(char* inbuf, size_t inbytesleft, char* outbuf, size_t outbyteslen)

if(stricmp(m_pszfromcode,"gb2312") == 0)

#else

size_t outbytesleft = outbyteslen;

size_t ret = 0;

while (1)

inbuf++; inbytesleft--;

} nreallen = outbyteslen-outbytesleft;

outbuf[nreallen]=0;

#endif

return nreallen;

}

4、後記

該**只是乙個示例,請根據自己的需要做更改!

linux windows下udp測試小工具

原文 說工具一 wireshark 這個工具是抓包的神器,我不知道有沒有在之前的文章裡說起,總之,他是好評如潮,誰用誰知道,我就不班門弄斧的多作蹩腳的介紹了,只說一點,他會自做聰明的按照埠號來解碼協議,有的時候被他弄的一塌糊塗,此時選擇不解碼任何協議便可。二 sokitweb超讚 國人寫的乙個tcp...

Linux Windows 下解壓和打包jar包

linux系統和windows系統下打包jar包相同 把當前目錄下的所有檔案打包成project.jar jar cvf project.jar c 建立jar包 v 顯示過程資訊 f 檔案 linux下解壓jar包 jar xvf project.jar 解壓到當前目錄,不會建立新的資料夾,而是解...

Linux Windows檔案編碼

在linux和windows下,經常需要共享一些文件,最方便的方法就是編碼均設定為utf 8。但是經常會因為win下預設為gb2312而導致到linux檢視有問題 此時可以使用openoffice進行檢視,並選擇編碼為gb2312 如果要搞成utf 8的,那就得直接在openoffice裡ctrl ...