給新員工的第乙個任務

2021-06-08 01:34:18 字數 2183 閱讀 5304

專案裡面第一次嘗試使用db2資料庫,在windows端進行除錯的時候發現取到的中文是ascii編碼的,資料庫設定的是utf-8。

於是想到兩個思路解決問題:

1:再嘗試通過資料庫的設定從而直接取出utf-8的編碼;

2:從資料庫中取到ascii的編碼後再進行轉換utf-8;

第二個思路功能單一,正好是檢查新員工素質的時候啊,於是給幾個新員工提了乙個任務:使用昨天配置的eclipse c++環境編寫乙個函式,函式功能:轉換中文的編碼(ascii---utf-8)

要求:1:有錯誤處理,編碼格式錯誤要throw異常;

2:函式有注釋,使用上我給的注釋模板

3:要求有main函式。測試編碼轉換函式的時候,通過檔案讀寫來進行字串的讀寫。例如寫兩個檔案,相同的中文,不同的編碼。通過檔案讀到ascii中文,最後輸出到utf-8的檔案,自己一對比也知道函式轉換對不對了

4:一天完成,相互鼓勵討論,不鼓勵copy code

最先完成的居然是校友,看來還是有兩把刷子(中午了解了下還是學自動控制的),我測試了一下,功能ok,注釋ok,異常處理ok。

自己那條思路也趕緊想辦法吧。

首先確定資料庫設定codepage=1208 codeset=utf-8。也就是說儲存的varchar型別的資料都是utf-8格式的。

通過google搜尋:

但是放到我們的**中後發現sql_attr_utf8沒有在任何標頭檔案中定義。

後來仔細想想可能有點不對勁,可能是因為我的作業系統的緣故,我win7用的是gbk編碼,所以cli介面自動判斷給轉成gbk編碼(ascii編碼)了。

但是我寫的是後台服務程式,應該是在linux上跑著呢(目前和db2在一台機器上),沒準在linux上就沒問題了。

檢視了下linux系統設定:

/etc/sysconfig/language

rc_lang="zh_cn.utf-8"

那麼寫個簡單測試程式吧:

#include #include #include int main( int argc, char **argv)

;database=**;hostname=*.*.*.*;port=60000;protocol=tcpip;uid=db2inst1;pwd=***;";

sqlreturn clirc = sql_success;

sqlhandle henv;

sqlhandle hdbc; //資料庫連線

sqlchar conn[555];

strcpy((char*) (conn), strsqldriver);

clirc = sqlallochandle(sql_handle_env, sql_null_handle, &henv);

clirc = sqlallochandle(sql_handle_dbc, henv, &hdbc);

if (clirc != sql_success)

sqldriverconnect(hdbc, (sqlhwnd) null, conn, sql_nts, null, 0, null,

sql_driver_noprompt);

if (clirc != sql_success)

sqlhandle hstmt; //sql控制代碼

sqlallochandle(sql_handle_stmt, hdbc, &hstmt);

sqlchar *stmt = (sqlchar *) "select coalesce(address,'') from sm.test";

sqlchar val[15];

sqlinteger ind;

clirc = sqlexecdirect(hstmt, stmt, sql_nts);

clirc = sqlbindcol(hstmt, 1, sql_c_char, val, 15, &ind);

clirc = sqlfetch(hstmt);

for (int i = 0; i < 6; ++i)

clirc = sqldisconnect(hdbc);

return 0;

}

輸出比較簡單,就放倆漢子在資料庫字段裡面。

果然如想象的一樣,windows下和linux下的輸出是不一樣的。

雖然給新員工的任務排不上用場,但是也不錯,先探探虛實嘛,好像也給自己一點小壓力,自己貌似剛入職的時候能力還比較差啊。

FreeRTOS 啟動第乙個任務

freertos開始第乙個任務原始碼分析 vtaskstartscheduler 1.建立乙個空任務 優先順序為0 2.是否使用軟體定時器,是的話 建立軟體定時器 3.關閉中斷 關中斷操作的暫存器是basepri,開中斷在svc中斷服務函式中開啟 4.初始化靜態全域性變數 xnexttaskunbl...

linux的第乙個任務(程序)

linux下有3個特殊的程序,idle程序 pid 0 init程序 pid 1 和kthreadd pid 2 任務0,0號程序 開天闢地的idle程序其pid 0,其前身是系統建立的第乙個程序,也是唯一乙個沒有通過fork或者kernel thread產生的程序。完成載入系統後,演變為程序排程 ...

第乙個迭代任務的製作

1.在res裡的layout中建立三個包fenlei.xml shouye.xml xinjianshijian.xml 2.xinjianshijian.xml裡的介面和 是 3.fenlei.xml裡的介面和 是 4.shouye.xml裡的介面和 是 5.mainactivity裡的 是 6....