努力将 LPBYTE 转换为 char* 或 C 中的任何类似内容(中文输出?)

Struggling with conversion of an LPBYTE to char* or anything alike in C (Chinese output?)

我正在处理一个 C 项目,但遇到了问题。 该程序读取由 .php 页面回显的字符串。它使用此代码 读取数据并将其指定给一个变量,该变量被发送到 Commands() 函数:

LPSTR szBuffer=(LPSTR)chunk+0x1000;
DWORD dwRead;

if (CWA(_HttpSendRequestA, wininet, hHttpRequest, szHeaders, lpstrlenA(szHeaders), szReq, lpstrlenA(szReq)) != 0)
    {
        CWA(_InternetReadFileA, wininet, hHttpRequest, szBuffer, 0x400, &dwRead);
        if (dwRead)
            Commands((LPBYTE)szBuffer, dwRead);
    }

如您所见,数据被发送到 Commands() 函数,该函数接收 LPBYTE szBuffer(函数中名为 "command")和 DWORD dwRead(函数中名为 "size" ).

在 Commands() 函数中,它应该读取从 .php 页面读取的字符串。然而,由于数据似乎存储为 LPBYTE,我做了很多事情试图将其转换为 char*。然而,当我认为我终于得到它时,我尝试使用 MessageBox 输出它(以查看它是否显示它应该读取的字符串)。但是,这个returns我的汉字(而原来的字符串应该是这样的:

"TASKci=0C73CCFD206BBD011E7087CE0806E6F6E69630,job=dlex,ti=AD62A5950B76F3812C542C24040EACE9,pr=https,ur=//test.com/test.txt,cl=".

截图什么的returns我:http://prntscr.com/h0p5iw

Commands() 中的代码看起来如何:

BOOL Commands(LPBYTE command, DWORD size) {

LPTSTR x = (LPTSTR)((char*)command);

{

        int msgboxID = MessageBox(
        NULL,
        x,
        (LPCWSTR)L"Woop",       
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 );

}


CWA(Sleep, kernel32, 100);

return 1; }

我是 C 的新手(我以前只用 C# 写过东西)所以如果我问任何愚蠢的问题我很抱歉,我真的尽力了但我似乎找不到任何解决方案我自己。

此外,请记住,除了 Commands() 函数中的内容之外的所有内容都不是我编写的,而是由更有经验的人编写的。该代码应该没问题,我确定它正在从页面读取数据,可能只是我在某处搞砸了转换。

窄字符串 (char*) tends to look like Chinese 当您在需要宽 UTF-16 Unicode 字符串的地方使用它时。

你不能只转换字符串来改变它的类型,你需要调用 MultiByteToWideChar.