最近有一個Webservice的對接項目,其中用到了gSoap工具在C/C++下進行對接開發。中間遇到一箇中文編碼的問題。
項目環境是在Linux下的,但是由於網絡的問題只能在windows下寫了一個demo測試程序。在對接過程中一直有一個發送中文編碼的問題。查了不少資料,讀了一下gSoap的源碼,原來是中文編碼的問題。
注意:
gsoap中文支持。2種方式解決;
注;方法a不適用於非中文操作系統,linux,unix,aix請用方法b
a. setlocale(LC_ALL, "");
soap_set_mode((soap*)&client,SOAP_C_MBSTRING);
設定本地字符集(既中文編碼)及MultiByteString(GB雙字節編碼),中文字符串不需要另行轉換
所以Windows下的VC6.0中的demo程序中需要設置SOAP_C_MBSTRING屬性。
b. 使用UTF8編碼傳輸
soap_set_mode((soap*)&client,SOAP_C_UTFSTRING);
client.mode|=SOAP_C_UTFSTRING; //解析接受時可能需要設定,發送無需設定
將中文字符串轉碼(UTF8)發送。
所以中文編碼在多環境、多操作系統支持切換中,是一個特別需要留心的地方。