亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 21720 | 回復(fù): 4
打印 上一主題 下一主題

C++ UTF-8 String 轉(zhuǎn)換為 char * 字符串的最簡單方式 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-05 09:16 |只看該作者 |倒序?yàn)g覽
本帖最后由 眨眼懂得 于 2011-12-05 09:19 編輯

c++ ,感覺還不錯(cuò),在北大青鳥也是學(xué)習(xí)了一段時(shí)間的,課程不難,但是想要學(xué)習(xí)更深的東西,也是靠自己學(xué)習(xí)的。
使用sqlite3開發(fā),中間需要用中文,XE的缺省char*直接使用中文,在sqlite *.db3的數(shù)據(jù)庫表格中顯示是亂碼,用數(shù)據(jù)庫管理器來瀏覽等管理時(shí)非常不便。

  于是決定還是使用utf-8的String數(shù)據(jù)類型,但在sqlite的API中,輸入字符串參數(shù)均為char*,直接使用String是編譯通不過的,在csdn,谷哥,度娘等搜索,不知道是關(guān)鍵字沒設(shè)置好還是什么,說的都不得要領(lǐng),后來找到有人會(huì)寫一段程序,用逐個(gè)字符翻譯的方式轉(zhuǎn)換,我心不甘,于是試了幾天,試出一個(gè)更加簡便的方式,列出給各位。

  我使用的編譯器是RAD XE, Sqlite版本3.7.9, 數(shù)據(jù)庫管理器是sqlite expert 3.3.52。

  直接使用字符串,由于編譯為GBK,導(dǎo)致管理器瀏覽出來是亂碼。

  int iRet;
  sqlite3 *psqlite3;
  char *pQuery, *pErrMsg;
  iRet = sqlite3_open( "c:\\test.db3", &psqlite3 );
  pQuery = "INSERT INTO table1 (idno,user,pass) VAULES( 1, 'GBK中文', '直接使用char類型' );";
  iRet = sqlite3_exec( psqlite3, pQuery, NULL, NULL, &pMsg );
  sqlite3_close( psqlite3 );   


  而當(dāng)使用String類型,在如下轉(zhuǎn)換后, sqlite expert正常顯示中文,表明使用了utf-8編譯成功.

  int iRet;
  sqlite3 *psqlite3;
  char *pQuery, *pErrMsg, QueryBuf[512];
  String strUtf8;
  RawByteString strRaw;

  strUtf8 = "INSERT INTO table1 (idno,user,pass) VAULES( 1, 'Utf8中文', '使用String類型再轉(zhuǎn)' );";"
  strRaw = UTF8Encode(strUtf;
  strcpy( QueryBuf, strRaw.c_str() );
   

  iRet = sqlite3_open( "c:\\test.db3", &psqlite3 );
  iRet = sqlite3_exec( psqlite3, QueryBuf, NULL, NULL, &pMsg );
  sqlite3_close( psqlite3 );   
   

  測試后看,utf-8格式顯示中文成功。

  這里的關(guān)鍵是,把String類型utf-8,使用UTF8Encode系統(tǒng)函數(shù),轉(zhuǎn)換成RawByteString,然后使用RawByteString類型的成員函數(shù)c_str(),可轉(zhuǎn)換成char*類型,而內(nèi)容是utf-8格式的,這樣在傳進(jìn)sqlite api后,可正常作為utf-8的內(nèi)容。

內(nèi)容不多,但是希望對大家有幫助。詳情可以:http://www.52benet.cn

論壇徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
2 [報(bào)告]
發(fā)表于 2011-12-05 09:34 |只看該作者
北大青鳥有這么腦殘嗎?
用GCC的話,直接把源碼保存成無bom的utf8格式就可以了。

論壇徽章:
11
未羊
日期:2013-12-16 12:45:4615-16賽季CBA聯(lián)賽之青島
日期:2016-04-11 19:17:4715-16賽季CBA聯(lián)賽之廣夏
日期:2016-04-06 16:34:012015亞冠之卡爾希納薩夫
日期:2015-11-10 10:04:522015亞冠之大阪鋼巴
日期:2015-07-30 18:29:402015亞冠之城南
日期:2015-06-15 17:56:392015亞冠之卡爾希納薩夫
日期:2015-05-15 15:19:272015亞冠之山東魯能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16賽季CBA聯(lián)賽之八一
日期:2016-07-22 09:41:40
3 [報(bào)告]
發(fā)表于 2011-12-05 10:24 |只看該作者
北大青鳥有這么腦殘嗎?
用GCC的話,直接把源碼保存成無bom的utf8格式就可以了。
noword2k 發(fā)表于 2011-12-05 09:34


indeed

論壇徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16賽季CBA聯(lián)賽之青島
日期:2016-07-05 12:36:0515-16賽季CBA聯(lián)賽之廣東
日期:2016-06-29 11:45:542015亞冠之全北現(xiàn)代
日期:2015-07-22 08:09:472015年辭舊歲徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39獅子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技術(shù)圖書徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
4 [報(bào)告]
發(fā)表于 2011-12-05 11:55 |只看該作者
沒看懂,比如 String 是哪里來的呀?非標(biāo)準(zhǔn)庫中的東西,起碼要說個(gè)來源

還有 strUtf8 = "INSERT INTO table1 (idno,user,pass) VAULES( 1, 'Utf8中文', '使用String類型再轉(zhuǎn)' );";"
也挺奇怪的,竟然三個(gè)分號(hào)

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2011-12-05 11:57 |只看該作者
回復(fù) 4# bruceteen
大概是編輯器(非智能)的自動(dòng)補(bǔ)完的結(jié)果
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP