作者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)
1F:推 worldxxi:error C2065: 'wr' : undeclared identifier我没设定好吗 07/14 13:58
2F:→ worldxxi:显示方法二出来的还是 ' 虽然我看ucs2str是那些字没错 07/14 14:00
3F:→ UNARYvvv:DWORD wr; // 补加这个宣告 刚才忘记复制 07/14 14:05
4F:→ worldxxi:可以了!感恩,可是方法二要怎样才能正确显示呢? 07/14 14:15