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 ...