在vs2008中,如果專案設定了unicode字符集,把中文輸出到檔案中經常會遇到錯誤。
在mfc專案中,可以使用以下語句來實現unicode到多位元組字元的轉換:
uses_conversion;
cstring strlog = _t("我愛大家");
const
char* cplog = (const
char*)w2a(strlog);
cfile myfile;
myfile.open(_t("test.txt"),cfile::modecreate|cfile::modewrite);
myfile.write(cplog,strlen(cplog));
myfile.close();
其實stl也提供了unicode字元的處理,這裡的unicode只是兩個位元組的字元(即unsigned short)。unicode對應的字串處理比ansi麻煩,相關的類基本前面都帶有'w'。如std::wstring,std::wofstream。
下面貼兩段**來實現輸出unicode到檔案中。
1、cstring mfcstr = _t("大家.txt");
std::wstring str = l"大家";
std::wofstream ofile(mfcstr.getbuffer(mfcstr.getlength()));
ofile.imbue(std::locale("chs")); 設定輸出流的imbue屬性很重要
ofile.write(str.c_str(),str.length());
ofile.write(l"/r/n",2);
ofile.write(mfcstr.getbuffer(mfcstr.getlength()),mfcstr.getlength());
ofile<"我愛她"
要注意第四句,如果沒有設定第四句,是不能把中文輸出到檔案中的。
2、設定全域性的locale,輸出中文到檔案會出錯,可能是因為沒有設定好本地化的東西。
locale &loc=locale::global(locale(locale(),"",lc_ctype));
ofstream ofs("ofs.txt");
wofstream wofs(l"wofs測試.txt");
locale::global(loc);
ofs<<"test測試"
<<1234<<1234<
在讀取這些檔案時,首先要設定好locale,然後再開啟檔案來讀取資料。如:
std::wstring str = l"大家.txt";
wstring strline;
locale loc("chs");
wifstream in;
in.imbue(loc); //關鍵
in.open(str.c_str());
if (!in.is_open())
while (in>>strline)
in.close();
python檔案輸出unicode轉碼
有時候利用python爬蟲獲得的檔案是unicode的編碼格式。輸出大概是 類似這種。根據不同的編碼,讀取檔案輸出的時候,加上對應的解碼方式就行了。如 with open mingyan.json r encoding unicode escape as file message file.read...
從STL檔案到網格拓撲
stl檔案是什麼 stl檔案是網格檔案的一種格式,分為二進位制和文字兩種型別。具體來講,它定義了一群三角麵片,比如下面是乙個文字的stl示例 solid geometryplusplus facet normal 0.902325 0.430279 0.0258872 outer loop vert...
SpringBoot輸出日誌到檔案
2.2 logging.file.path 2.3 注意 3 使用xml擴充套件 4 logging裡的預設值 5 效果 指定日誌檔案的位置。使用相對路徑,就會在專案根目錄下生成乙個lab.log檔案 logging file name lab.log 在專案根目錄下生成乙個logs資料夾,logs...