2011-11-13 15 views
5

मैं UTF8 एन्कोडिंग के साथ एक पाठ फ़ाइल है, और मैं एक opendialoge, एक ज्ञापन और एक बटन के साथ डेल्फी 2009 में एक आवेदन पत्र बना सकते हैं और इस कोड को लिखें:डेल्फी में पाठ फ़ाइल से पढ़ें 2009

if OpenTextFileDialog1.Execute then 
    Memo1.Lines.LoadFromFile(OpenTextFileDialog1.FileName); 

जब मैं अपने आवेदन चलाने के लिए, मैं बटन पर क्लिक करें और अपने पाठ फ़ाइल का चयन करें, ज्ञापन में मैं देखें:

"ँ ط¯ط ± ط ¢ ظ ... एक € ँ ع © € چظط²ط' एक € â چط' एक € چط§ظط ± ط²غ Œâ € Œ: ط ± "

वर्ण सही ढंग से प्रदर्शित नहीं किए गए थे। मैं इस समस्या को कैसे हल कर सकता हूं?

उत्तर

12

फ़ाइल शुरुआत में एक UTF-8 बीओएम नहीं है, तो आप LoadFromFile() बताने के लिए है कि फाइल एन्कोड किया गया है की जरूरत है, उदाहरण के लिए:

Memo1.Lines.LoadFromFile(OpenTextFileDialog1.FileName, TEncoding.UTF8); 
5

यह में कोई एन्कोडिंग स्वरूप का चयन करने के लिए संभव है ओपनटेक्स्टफाइल संवाद। OpenTextFileDialog.Encodings एन्कोडिंग की एक सूची का प्रतिनिधित्व करता है जिसका उपयोग किया जा सकता है, डिफ़ॉल्ट सूची: एएनएसआई, एएससीआईआईआई, यूनिकोड, बिग इंडियन, यूटीएफ 8 और यूटीएफ 7।

// Optionally add Encoding formats to the list: 
FMyEncoding := TMyEncoding.Create; 
OpenTextFileDialog1.Encodings.AddObject('MyEncoding', FMyEncoding); 
// Don't forget to free FMyEncoding 


var 
    Encoding : TEncoding; 
    EncIndex : Integer; 
    Filename : String; 
begin 
    if OpenTextFileDialog1.Execute(Self.Handle) then 
    begin 
    Filename := OpenTextFileDialog1.FileName; 

    EncIndex := OpenTextFileDialog1.EncodingIndex; 
    Encoding := OpenTextFileDialog1.Encodings.Objects[EncIndex] as TEncoding; 
    // No Encoding found in Objects, probably a default Encoding: 
    if not Assigned(Encoding) then 
     Encoding := StandardEncodingFromName(OpenTextFileDialog1.Encodings[EncIndex]); 

    //Checking if the file exists 
    if FileExists(Filename) then 
     //Display the contents in a memo based on the selected encoding. 
     Memo1.Lines.LoadFromFile(FileName, Encoding) 
+0

मैं इसके बारे में उत्सुक हूं। मुझे यकीन नहीं है कि आप क्या कर रहे हैं कोड। एन्कोडिंग ऑब्जेक्ट्स के बारे में क्या है? क्या आप संभवतः इस पर कुछ अतिरिक्त पाठ और एनोटेशन के साथ विस्तार कर सकते हैं। –

+0

डेविड, मैंने अपना उत्तर –

+0

+1 अपडेट किया है, मुझे इस नियंत्रण से अवगत नहीं था। क्या मैं सही हूं कि संवाद में एक ड्रॉप डाउन सूची शामिल है जो उपयोगकर्ता को एन्कोडिंग निर्दिष्ट करने की अनुमति देती है? मुझे लगता है कि फ़ाइल को सहेजते समय यह आमतौर पर देखा जाता है (उदाहरण के लिए नोटपैड जिस तरह से करता है)। क्या यह नियंत्रण नई शैली विस्टा संवाद का उपयोग करता है या क्या यह विरासत XP संवादों पर वापस आ जाता है? –

संबंधित मुद्दे