[問題] 請教wstring -> char * 的問題(已解決)

看板C_and_CPP (C/C++)作者 (Bad_To_The_Bone)時間13年前 (2013/02/09 22:10), 編輯推噓0(0013)
留言13則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2005 由於需要把wstring 轉成const char* 自己用網路上寫的轉換後還是錯誤 ------- code --------- std::string ws2s(const std::wstring& s) { string result; int len = WideCharToMultiByte(CP_ACP, 0, s.c_str(), s.size(), NULL, 0, NULL, NULL); char* buffer = new char[len + 1]; WideCharToMultiByte(CP_ACP, 0, s.c_str(), s.size(), buffer, len, NULL, NULL); buffer[len] = '\0'; result.append(buffer); delete[] buffer; return result; } std::wstring lala = L"測試"; std::string haha = ws2s(lala); 使用haha.c_str(); 存入資料庫後還是一堆亂碼都顯示???? ---------------------------- 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.120.224

02/09 23:07, , 1F
你可能需要注意字串的 code page
02/09 23:07, 1F

02/09 23:08, , 2F
CP_ACP 這個引數就是被用來指定 code page
02/09 23:08, 2F

02/09 23:27, , 3F
linotwo大 您是指其實ws2s可用嗎?
02/09 23:27, 3F

02/09 23:28, , 4F
我自己試驗的語系可能不只一個語系 想要通吃有辦法嗎
02/09 23:28, 4F

02/09 23:30, , 5F
改成CP_UTF8 不知道有沒有 我試試看
02/09 23:30, 5F

02/10 01:39, , 6F
wstring=L"zh_中文" 轉過存進db 顯示"zh_??"
02/10 01:39, 6F

02/10 01:40, , 7F
得看各種語系嗎? CP950? 抱歉對語言這部分認識很淺薄
02/10 01:40, 7F

02/10 01:47, , 8F
你的 source code 如果存成 big5 也沒用
02/10 01:47, 8F

02/10 03:15, , 9F
喔喔 感謝大大 原來是我把字寫在CODE裡面才會錯
02/10 03:15, 9F

02/10 03:16, , 10F
我改一下標題跟內容好了 現在不用QString
02/10 03:16, 10F
----------------------------- 我是用SQLite3的sqlite3_exec 第二個參數是要做的SQL字串 文件說可以直接在code裡面打各語系 目前測試 db檔案開啟好像內建就是utf8的方式 可以不用變成utf16 我嘗試把code做成檔名 然後把檔名存到wstring 再用上面的function轉換後原本是失敗的 把CP_ACP 改成CP_UTF8後有成功 ======================================== PS.我看不懂這些文字 貼來BBS有些字還是消失 但是可以在WINDOWS檔案總管顯示 de_Schließen es_Atrás fr_Mettre à jour it_Mercoledì ja_ファイル tr_Günceller zh_cn_继续 zh_中文 ※ 編輯: donkeychen 來自: 61.227.120.224 (02/10 03:25)

02/10 16:56, , 11F
ja那個是"file"的片假名
02/10 16:56, 11F

02/18 10:38, , 12F
我從字串亂copy來的 其實不是很知道到底在xp下從notepa
02/18 10:38, 12F

02/18 10:38, , 13F
notepad複製貼上會不會有問題
02/18 10:38, 13F
文章代碼(AID): #1H5bZV4V (C_and_CPP)
文章代碼(AID): #1H5bZV4V (C_and_CPP)