2011-10-11 18 views
7

मेरे मुद्दा यह है:बनाने के लिए Stream.Write() UTF-8 प्रारूप में उत्पादन

मैं पैदा करने और ASP.NET का उपयोग कर एक एसक्यूएल फ़ाइल अपलोड कर रहा है, लेकिन फ़ाइल के बाद FTP सर्वर पर सहेजा जाता है, ü जैसे वर्ण &uul;, ø से & oslash में बदल दिए गए हैं; और इतने पर ... मैं इसे कैसे होने से रोक सकता हूं? मैं नहीं चाहता कि फ़ाइल ASCII कोड के साथ स्वरूपित हो, लेकिन यूटीएफ -8 के साथ।

कोड है कि उत्पन्न करता है और फ़ाइल अपलोड करता है इस तरह दिखता है:

//request = the object to be made an request out of. 
Stream requestStream = request.GetReguestStream(); 
var encoding = new UTF8Encoding(); 
//fileContent is the string to be saved in the file 
byte[] buffer = encoding.GetBytes(fileContent); 
requestStream.Write(buffer, 0, buffer.Length); 
requestStream.Close(); 

आप देख सकते हैं मैं System.Text.UTF8Encoding उपयोग करने के लिए कोशिश की है, लेकिन यह काम नहीं करता।

+0

Opps, दूसरा ø वहाँ होना चाहिए और oslash; अंतरिक्ष के बिना। – linnkb

+0

त्रुटि प्राप्त करने वाले पक्ष पर हो सकती है ... –

+0

स्ट्रीमिंग लेखन के साथ इस समस्या के कारण चीजों का एफ़टीपी पक्ष होने की संभावना अधिक है। लेकिन आपने वह कोड नहीं दिखाया है। –

उत्तर

1

इसे डीबग में रखें और एन्कोडिंग के बाद 'बफर' में क्या रखा जाता है इसे देखें। गेटबाइट्स() को कॉल किया जाता है। यह सत्यापित करेगा कि यह आरएक्स पक्ष है जिसके कारण यह है।

9

याद रखें, धाराओं के साथ आप लगभग हमेशा आवश्यक धाराओं को लपेट सकते हैं। आप UTF-8 एन्कोडेड सामग्री लिखने के लिए चाहते हैं, तो आप सही एन्कोडिंग के साथ एक StreamWriter में अनुरोध धारा लपेट:

using (Stream requestStream = request.GetRequestStream()) 
using (StreamWriter writer = new StreamWriter(requestStream, Encoding.UTF8)) { 
    writer.Write(fileContent); 
} 

के बाद से आप कहते हैं कि आप एक वेब सेवा पर अपलोड कर रहे और साथ ही अपनी सामग्री एन्कोडिंग सेट करना सुनिश्चित करें । चूंकि आपने पोस्ट नहीं किया है, जहां request ऑब्जेक्ट आता है, मुझे लगता है कि यह सामान्य HttpWebRequest है।

एक HttpWebRequest के साथ आप सर्वर को बताएंगे कि ContentType संपत्ति का उपयोग करके सामग्री एन्कोडिंग क्या है।

request.ContentType = "text/plain;charset=utf-8"; 

जैसा कि अन्य ने उल्लेख किया है, हालांकि, एफ़टीपी स्थानांतरण स्वयं भी इसे तोड़ सकता है। यदि आप कर सकते हैं, तो सुनिश्चित करें कि इसे बाइनरी मोड में स्थानांतरित किया गया है, ASCII मोड नहीं।

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