測驗字串:p9o/p9quYQ==
正確決議的結果:我愛我家
試驗結果:我?我家 (愛字丟失)
測驗代碼:
//uses Soap.EncdDecd
function DecodeBase64Str2: string;
var
InStr, OutStr: TStringStream;
begin
InStr := TStringStream.Create('p9o/p9quYQ==');
InStr.SaveToFile('c:\1.txt');//輸出的結果 :p9o/p9quYQ== 正確
try
OutStr := TStringStream.Create('');
try
DecodeStream(InStr, OutStr);
OutStr.SaveToFile('c:\2.txt');
//輸出的結果:и?и產 ,正確的應是и稲и產
//用第三方面軟體將此按Big5編碼字符查看為 我?我家
//此時已發生丟失“愛” 字
Result := TEncoding.GetEncoding(950).GetString(OutStr.Bytes); //將Big5編碼轉成gb2312
//Result:= '我?我家'
finally
OutStr.Free;
end;
finally
InStr.Free;
end;
end;
uj5u.com熱心網友回復:
http://bbs.csdn.net/topics/380108122uj5u.com熱心網友回復:
用EncodeString問題更大,你可以試一下,我的這個代碼能正常解UTF8,GB2312的(改一下代碼頁就可以),可以正常解出“我愛我家”BASE64編碼,而且上面的代碼也不是所有BIG5都解不出,換一個測驗的字串,比如“pGquYaZupKOmbqFDoUOhQw==”就能正常解出為“大家好不好。。。”,就是這一個"我愛我家"解不好,會丟字
uj5u.com熱心網友回復:
我用UE感覺LZ的測驗字串有點問題,如果按照Big5碼,“愛”這個字根本不在字符集里,繁體的這個字是“愛”,對應的“我愛我家”的Base64是p9q3UqfarmE=,這個串解碼后才成為“и稲и產”如果在文本編輯器里面輸入“我愛我家”(對應樓主的字串),雖然當時的“愛”字能出來,但只要一保存再用Big5碼讀取,立馬變成?號。
也就是說,這可以視為文本輸入框的強行非法字符上屏。。
再說直白一點,LZ根本就是把一個繁體字庫里沒有的字強行編碼,再解碼當然因為沒這個字只能成?號。
求結貼,我是剛看到這個問題
uj5u.com熱心網友回復:




uj5u.com熱心網友回復:
不好意思,很久沒上了,你的答案是正解,我現在是用csdn的安卓客戶端,沒法結帖,等上電腦就結
uj5u.com熱心網友回復:
確實“愛”是簡體字。它不在字符集當中,當然不能解出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/81131.html
標籤:語言基礎/算法/系統設計
上一篇:資料庫
下一篇:關于進制轉換問題
