環境:delphi2010
任務:utf-8?Q、iso-2022-jp?B、iso-2022-jp?Q等情況的解碼
情況描述:
1、一開始本人碰到一些iso-2022-jp?B型別代碼,例如
“GyRCUn1SfRsoQg==” 解碼應當為“哈哈”
不過使用delphi自帶的Base64解碼函式DecodeString(參照http://hi.baidu.com/cobala/item/7ddd51245498c94247996249)
解碼結果“$BR}R}(B”
,即其默認解碼方式為"utf-8"。
該情況本人嘗試很久,稀里糊涂居然解決了,大概程序就是將base64碼改變后變成Tstream(網上的一個base64tostream函式),然后用tsringlist的loadfromstream(Tstream,iso-2022-jp的encoding)的方式,tstringlist.text就是解碼后正確結果。
2、后來又碰到一些utf-8?Q的代碼,例如
“=E4=B8=AD=E5=9B=BD” 解碼應當為“中國”
本人找了N久也沒在網上找到一個能用的函式,后來聽說Indy自帶的IDCoderQuotedPrintable組件能解決,本人嘗試后結果如下:
procedure Tform1.bitbtn1click(sender:tobject);
var
str:string;
begin
str:='=E4=B8=AD=E5=9B=BD';
edit1.text:=TIdDecoderQuotedPrintable.decodestring(str);
end;
結果見鬼的出來了“??-???”這樣的字符,我一查發現這是用iso-2022-jp的解碼方式解出來的(可以用在線解碼驗證http://bianma.911cha.com/)。。。。。這是怎么回事?
請教:
1、各位大大們有沒有集成化得函式能一次性解決各種國際編碼的解碼問題?
2、Delphi的這些解碼函式的默認解碼方式怎么知道?網上對這些函式的介紹好少。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/149056.html
標籤:語言基礎/算法/系統設計
