線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2348
推到 Plurk!
推到 Facebook!

MSN封包解開秀不出中文

答題得分者是:RaynorPao
csm825050
一般會員


發表:49
回覆:29
積分:15
註冊:2003-08-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-26 10:27:19 IP:219.80.xxx.xxx 未訂閱
不好意思,最近我的問題很多,剛接觸網路有關的工作,請多包涵. 我在解MSN封包的時候,遇到一個問題,中文字會變亂亂的, 我的做法是將封包中的binary code放Memo中, Memo1->Lines->Add(buff); 可是會有中文字的問題,看看內容: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-MMS-IM-Format: FN=新細明體; EF=; CO=0; CS=88; PF=0 charset=UTF-8,是編碼格式 我有用ultraedit試過,相同的中文字,binary會與MSN送出的不一樣, 請問有人遇過這問題嗎,該如何處理呢??
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-26 15:00:25 IP:203.73.xxx.xxx 未訂閱
引言: 不好意思,最近我的問題很多,剛接觸網路有關的工作,請多包涵. 我在解MSN封包的時候,遇到一個問題,中文字會變亂亂的, 我的做法是將封包中的binary code放Memo中, Memo1->Lines->Add(buff); 可是會有中文字的問題,看看內容: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-MMS-IM-Format: FN=新細明體; EF=; CO=0; CS=88; PF=0 charset=UTF-8,是編碼格式 我有用ultraedit試過,相同的中文字,binary會與MSN送出的不一樣, 請問有人遇過這問題嗎,該如何處理呢??
csm825050 你好: 我想你的問題應該是編碼的轉換 (UTF8-->UNICODE-->BIG5),以上述的 FN 為例 原始內容為 新細明體 UTF8 編碼,看看轉成 BIG5 之後是什麼字?? (其他的小弟我也不清楚了,只能提供一個可能的方向)
   BYTE bUTF8[12]={0xE6, 0x96, 0xB0, 0xE7, 0xB4, 0xB0, 0xE6, 0x98, 0x8E, 0xE9, 0xAB, 0x94};
   wchar_t wszUNICODE[1024]={0};
   char szBIG5[1024]={0};
   MultiByteToWideChar(CP_UTF8, 0, (char*)bUTF8, 12, wszUNICODE, 1024*sizeof(wchar_t));
   WideCharToMultiByte(CP_ACP, 0, wszUNICODE, -1, szBIG5, 1024*sizeof(char), NULL, NULL);
   ShowMessage(szBIG5);
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
csm825050
一般會員


發表:49
回覆:29
積分:15
註冊:2003-08-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-26 16:17:30 IP:219.80.xxx.xxx 未訂閱
RaynorPao你好 你說的方法我試過了 不過FN得到的是"新細明體" 所以我猜這一段是文字檔的檔頭<head> 而內容應該是<body> 請問有方式將binary直接存成txt檔嗎? 我試過下面方法(不過存的檔沒資料) TStringList *sl=new TStringList; sl->Add(buff); sl->SaveToFile("Test.txt"); delete sl; 天啊 我試了一整天了 都沒辦法啊 附上完整資料: <head> MSG 22 N 158 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-MMS-IM-Format: FN=新細明體; EF=; CO=0; CS=88; PF=0 <body> 皜祈岫1234test:7" <==這應該是:測試1234test
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-26 17:50:23 IP:61.230.xxx.xxx 未訂閱
你好: 如果沒記錯的話,msn的資料是一個位元組(CHAR)一個位元組的.. 而中文字是兩個位元組(WORD),數字是一個位元組,根據MSN的訊 息來看,是用三個位元代表一個字,我想有一個位元是索引值,只要 取其中兩個字元,應該就是你要的中文字。 例如 '測'-> e6 b8 ac '123' -> 31 32 33 小弟只知道這邊...FYR
系統時間:2024-04-20 12:52:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!