一個關於編解碼格式的問題

C++服務端
其中text.ini文件用notepad++打開,看右下角如下
在這裏插入圖片描述
則表明此文件爲GB2312編碼,客戶端解析時也要用此編碼格式解析

std::string strFilePathName = "C:/Test/text.ini";
std::ifstream ifs(strFilePathName);
std::stringstream sstr;
sstr << ifs.rdbuf();
strBuff = sstr.str();
將strBuff傳回客戶端

TypeScript客戶端

接受到服務端的strBuff,開始解析
let jsonConfig : string = Serializer.BinaryStreamToString(bs, "GB2312")
其中Serializer.BinaryStreamToString(bs : BinaryStream, src_charset:string)函數實現內部爲
if("UTF8" == src_charset){
...
}
 else if("GB2312" == src_charset){
 ...
 }
 else if("UNICODE" == src_charset){
 ...
}
已經做了區分。

總結:服務端的配置文件用什麼格式編碼,返回到客戶端的數據也要用對應的編碼格式解析,否則客戶端解析失敗!(如:C:/Test/text.ini文件用UTF8編碼,客戶端收到後仍用GB2312解析,則出錯)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章