簡體   English   中英

努力將 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 輸出它(看看它是否顯示它應該讀取的字符串)。 但是,這會返回我的中文字符(而原始字符串應該是這樣的:

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

它返回給我的屏幕截圖: 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()函數中的內容之外的所有內容都不是由我編寫的,而是由更有經驗的人編寫的。 該代碼應該沒問題,我確信它正在從頁面讀取數據,可能只是我在某處搞砸了轉換。

當您在需要寬 UTF-16 Unicode 字符串的地方使用窄字符串 (char*) 時,它往往看起來像中文

您不能只是強制轉換字符串以更改其類型,您需要調用MultiByteToWideChar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM