1. 程式人生 > >MFC/C++ CFile寫入檔案資料,輸出utf-8的文字。(防止中文亂碼)

MFC/C++ CFile寫入檔案資料,輸出utf-8的文字。(防止中文亂碼)

需求說明:有時候用CFile寫入檔案的內容會出現中文亂碼問題,這時候就需要把寫入的檔案編碼型別改為utf-8的型別。

程式碼功能:輸出utf-8格式的內容到檔案中

作者:weekdawn

try
{
	 //建立mht檔案,並寫入資料
	 mhtFile.Open(filePath, CFile::modeCreate|CFile::modeWrite); 	//mhtFile為CFile型別,filePath為檔案路徑CString型別
	 //-------以下是將Unicode字元轉為utf-8字元,這樣才能正常顯示中文
	 DWORD dwFileLen = mhtFile.GetLength();
	 if (0 == dwFileLen)
	 {
	  const unsigned char LeadBytes[] = {0xEF, 0xBB, 0xBF};
	  mhtFile.Write(LeadBytes,sizeof(LeadBytes));
	 }
	 int nSrcLen = (int)wcslen(content);//content為要寫入的文字
	 CStringA utf8String(content);
	 int nBufLen = (nSrcLen+1) * 6;
	 LPSTR buffer = utf8String.GetBufferSetLength(nBufLen);
	 int nLen = AtlUnicodeToUTF8(content, nSrcLen, buffer, nBufLen);
	//上面的函式AtlUnicodeToUTF8()需標頭檔案:<atlenc.h>
	//功能:將unicode轉換成utf-8
	 buffer[nLen] = 0;
	 utf8String.ReleaseBuffer();
	 mhtFile.SeekToEnd();
	 //將轉碼後的內容寫入mht檔案
	 mhtFile.Write(utf8String.GetBuffer(),nLen);
	 mhtFile.Write("/r/n",2);
	 mhtFile.Close();
}
catch(CFileException *e)
{
	 CString errInfo;
	 errInfo.Format(_T("%s"),e->ReportError());
	 MessageBox(_T("檔案建立失敗!") + errInfo);
}


相關推薦

MFC/C++ CFile寫入檔案資料輸出utf-8文字(防止中文亂碼)

需求說明:有時候用CFile寫入檔案的內容會出現中文亂碼問題,這時候就需要把寫入的檔案編碼型別改為utf-8的型別。 程式碼功能:輸出utf-8格式的內容到檔案中 作者:weekdawn try {

C# 讀取txt檔案資料StreamReader.BaseStream.Seek()後ReadLine()有錯誤的問題

readerPOSPath.BaseStream.Seek(n, SeekOrigin.Begin); linepos = readerPOSPath.ReadLine();//讀一行 按照上面的方法。Seek到指定位置後,緊接著ReadLine(),得到的結果有Seek之前的資料,也就是

C語言 輸入一個小數輸出它的立方輸出保留小數點後的2位數字

c //輸入一個小數,輸出它的立方。輸出保留小數點後的2位數字。 #include <stdio.h> int main(int argc, const char * argv[]) { double i,t; printf("輸入一個小數:\n"); scanf("%lf

windows cmd視窗輸出UTF-8格式檔案顯示亂碼

本文來自網路,參考文件見文件末尾 想在windows cmd視窗中檢視utf-8中文,需要先執行以下步驟 chcp 65001 將CMD視窗切換成UTF-8內碼表 在命令列標題欄上點選右鍵,選擇"屬性"->"字型",將字型修改為True Typ

使用volley請求資料Gson解析json的時候出現中文亂碼問題

首先來看一下我出現的問題! 遇到的過問題的人,或上網也可以查的到,仔細看,我列印的Log日誌就是解析的資料,出現亂碼了,那說明這個jsonString是獲取到的資料,看後的兩個引數,第一個是.data這個意思應該就資料,而後面的就是轉碼格式,看原始碼就會知道,這個應該是預設

將GBK編碼形式的xml檔案 資料請求轉為utf-8

public String resposeString(String urlStr){ String result = ""; try { URL url = new URL(urlStr); HttpURLConnection httpURLC

JSP-(技巧)Eclipse預設新建檔案設定為適合中文的型別(UTF-8等)——解決中文亂碼問題

JSP-(技巧)Eclipse預設新建檔案設定為適合中文的型別(UTF-8等)——解決中文亂碼問題 開頭先備註一下: UTF-8不容易亂碼; GBK雖然簡體繁體都支援,但容易亂碼。(試過幾次) 問題 每次新建.jsp檔案都是ISO什麼什麼的(此時無法儲存中

C++PrimerPlus學習之輸入輸出檔案

流和緩衝區 C++程式把輸入和輸出看作位元組流。輸入時,程式從輸入流中抽取位元組;輸出時,程式將位元組插入到輸出流中。 流充當了程式和流源或流目標之間的橋樑。C++程式只是檢查位元組流,而不需要知道位

C#:開啟 檔案/資料夾選擇框選取並獲得路徑名稱

using System; using System.Windows.Forms; //選取檔案,並獲得路徑 private void button1_Click(object sender, EventArgs e) { var f = n

c++ 列印簡單log資訊輸出內容到某一檔案

#include<iostream> #include<sstream> #include<fstream> using

R從檔案中讀取資料輸出檔案

看了幾天的書,終於到這一步了,說實話,用R來做統計,很少有人手動的去輸入那些數字,肯定是從別的地方匯入的,我們用來處理就可以了,所以到這裡才算是真正的入門,前面都是做基礎的練手。 我學習R從《R語言與統計分析》入手,第一個例子,從書上的例子,入手,為大家能夠快速入門。 在F

C程式設計--對檔案的輸入輸出(案例)

第十章 問題一(fputc()函式的使用) 從鍵盤中輸入一些字元,逐個把他們送到磁碟上去,直到使用者輸入一個’#'鍵為止; #include<stdio.h> #include<stdlib.h>//用於 exit(0); int ma

C++讀取txt檔案資料

本次實驗主要目的是實現C++提取txt檔案的資料,txt檔案中的資料為double型。 txt檔案的資料為 1.123456789098 2.123456789098 3.123456789098 4.123456789098 5.123456789098 6.123456789098 7

C primier plus 檔案的輸入/輸出

程式設計練習第十二題,圖形輸出。 本題我用隨機函式rand()產生隨機數,進行檔案的輸入輸出操作。僅供參考。 #include<stdio.h> #include<stdlib.h> #define ROWS 20 #define COLS 30 int main(

C語言 對檔案的輸入輸出

1.檔案標誌: D:\CC\temp\file1.dat(dat代表是資料檔案)分為三段,檔案路徑,檔名,檔案型別 2.檔案緩衝區: ANSI C標準採用緩衝檔案系統處理資料檔案 3.檔案型別指標: 緩衝檔案系統中關鍵的概念是檔案型別指標,每一個被使用的檔案都是

c語言實現輸入成績輸出評分

方法一: #include <stdio.h> int main() { int a; printf("請輸入成績\n"); scanf("%d",&a); if(a>100||a<0) { printf("輸入錯誤

c語言多檔案程式設計即main檔案呼叫其他.c檔案的方法

c語言多檔案程式設計,即main檔案呼叫其他.c檔案的方法。 兩種方法的區別就是,gcc編譯時,是否加b.c檔案,不加的話,就在a.c檔案裡面,加#include "b.c" 至於extern 那一句,是否新增,編譯都是可以通過的,只是填加上去,大家都知道了,這個函式在其他地方定義了,這個地方只是呼

Spark Streaming接收kafka資料輸出到HBase

需求 Kafka + SparkStreaming + SparkSQL + HBase 輸出TOP5的排名結果 排名作為Rowkey,word和count作為Column 實現 建立kafka生產者模擬隨機生產資料 object produ

給定一個百分制的分數輸出相應的等級 90分以上 A級 80~89 B級 70~79 C

90分以上   A級       80~89          B級     70~79          C級      60~69          D級          60分以下   E級

資料預處理:讀取檔案資料並存為python陣列

檔案的簡單讀取 # 定義一個將檔案中的資料轉化為陣列的類 import numpy as np class DataUtil: # =============================================================================