作者UNARYvvv (有趣生活)
看板C_and_CPP
標題Re: [問題] 請問wstring格式存的字消失了
時間Tue Jul 14 13:08:14 2009
※ 引述《worldxxi (風)》之銘言:
: 我第一次碰編碼的問題,沒想到這麼麻煩
: 我想要把utf-8的文字寫入資料庫,一開始就有問題。
: 我宣告了一個字串,用來存 ( 'になるか' )
: wstring MessageUserSend=L"'になるか'";
: 可是不管我用wcout顯示在console,還是wofstream寫入檔案都只得到 ( ' )
: step-by-step 執行的時候,我看到MessageUserSend的值為<Bad Ptr>
: 我是用visual studio 2005
: 有人知道嗎?謝謝
其實直接用 string 處理就好
wstring 用 wchar_t 儲存字元,你的
' 字元也會變 2 bytes
你的資料直接傳遞應該是沒問題
現在為了顯示出來,可以使用以下作法
#include <locale.h>
#include <windows.h>
// 以下是那串日文的原始位元組資料
char utf8str[] =
"\x27\xE3\x81\xAB\xE3\x81\xAA\xE3\x82\x8B\xE3\x81\x8B\x27";
wchar_t ucs2str[100]={0};
MultiByteToWideChar(CP_UTF8, 0,
utf8str, strlen(utf8str)+1, ucs2str, 100);
// 顯示方法1:
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),
ucs2str, wcslen(ucs2str), &wr, NULL);
// 顯示方法2:
setlocale(LC_ALL, "");
printf("%ws", ucs2str);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.231.159.237
※ 編輯: UNARYvvv 來自: 118.231.159.237 (07/14 13:09)
推 worldxxi:error C2065: 'wr' : undeclared identifier我沒設定好嗎 07/14 13:58
→ worldxxi:顯示方法二出來的還是 ' 雖然我看ucs2str是那些字沒錯 07/14 14:00
→ UNARYvvv:DWORD wr; // 補加這個宣告 剛才忘記複製 07/14 14:05
→ worldxxi:可以了!感恩,可是方法二要怎樣才能正確顯示呢? 07/14 14:15