2010-11-08 16 views
8

मैं डीबी 2 से डेटा निकालने और फ़ाइल में लिखने के लिए vbscript का उपयोग कर रहा हूं। फाइल करने के लिए लेखन की तरह:यूनिकोड से यूटीएफ -8

Set objTextFile = objFSO.CreateTextFile(sFilePath, True, True) 

कि यूनिकोड में फ़ाइल बनाता है। लेकिन वह एक्सएमएल फाइल है और यह यूटीएफ -8 का उपयोग करती है। तो जब मैं एमएस एक्सएमएल नोटपैड के साथ एक्सएमएल फ़ाइल को खोलने यह त्रुटि फेंकता है:

तो मैं TextPad के साथ इस पाठ फ़ाइल खोलने और UTF-8 में बचत 'हेक्साडेसिमल मान 0x00 कोई अमान्य वर्ण है'। उसके बाद एक्सएमएल किसी भी समस्या के बिना खुलता है। क्या मैं यूनिकोड से यूटीएफ -8 में फ़ाइल को vbScript द्वारा परिवर्तित कर सकता हूं?

+1

vbscript में 'यूनिकोड' का क्या अर्थ है? यह वास्तव में क्या एन्कोडिंग का उपयोग करता है? –

+1

vbscript शायद यूटीएफ -16 एन्कोडिंग में डिफ़ॉल्ट रूप से फाइलें लिख रहा है। यूटीएफ -16 में पश्चिमी टेक्स्ट में हाई ऑर्डर बाइट के रूप में पूरे स्थान पर 0x00 होगा। और, पैडेंटिक नहीं होना चाहिए, लेकिन यूटीएफ -8 * * यूनिकोड है; यह एक विशेष यूनिकोड एन्कोडिंग योजना है। – DaveE

+0

क्या नीचे दिए गए दो उत्तरों में से कोई आपके लिए मदद/काम करता है? :-) – stealthyninja

उत्तर

16

आपकी फ़ाइल को utf-8 charset से बचाने के लिए स्ट्रीम ऑब्जेक्ट का उपयोग करना आपके लिए बेहतर काम कर सकता है;

Option Explicit 

Sub Save2File (sText, sFile) 
    Dim oStream 
    Set oStream = CreateObject("ADODB.Stream") 
    With oStream 
     .Open 
     .CharSet = "utf-8" 
     .WriteText sText 
     .SaveToFile sFile, 2 
    End With 
    Set oStream = Nothing 
End Sub 

' Example usage: ' 
Save2File "The data I want in utf-8", "c:\test.txt" 
0

ठीक है, कुछ मामलों में, हम एडीओ के बिना एक मशीन में WSH में ऐसा करने की जरूरत: यहाँ एक सरल .vbs ढंग से काम आप अपने डेटा पर बाहर का परीक्षण कर सकते हैं। इस मामले में, अपने दिमाग में रखें कि डब्लूएसएच यूटीएफ -8 प्रारूप में फ़ाइल नहीं बनाता है (CreateTextFile विधि यूटीएफ -8 के साथ काम नहीं करता है), लेकिन यूटीएफ -8 फ़ाइल (डेटा जोड़ना) में हेरफेर करना पूरी तरह से संभव है। यह सोचकर, मुझे एक गैर-रूढ़िवादी समाधान मिला। इन चरणों का पालन करें:

1) एक रिक्त नोटपैड खोलें, फ़ाइल पर क्लिक करें> फ़ाइल के लिए एक नाम टाइप करें (उदाहरण के लिए UTF8FileFormat.txt, उदाहरण के लिए), क्षेत्र "एन्कोडिंग" को यूटीएफ -8 में बदलें और क्लिक करें [बचाना]। नोटपैड छोड़ो।

2) अपने डब्ल्यूएसएच में आप अपनी यूटीएफ 8 टेक्स्ट फ़ाइल बनाने के लिए UTF8FileFormat.txt का उपयोग करेंगे। ऐसा करने के लिए, अपने FileSystemObject घोषणा के बाद, UTF8FileFormat.txt को एक नई फ़ाइल में कॉपी करने के लिए CopyFile विधि का उपयोग करें (ओवरराइट विकल्प का उपयोग करना याद रखें) और फिर, अपनी नई फ़ाइल को ForAppending और NoCreate विकल्पों के साथ खोलने के लिए OpenTextFile विधि का उपयोग करें। इसके बाद, आप सामान्य रूप से इस फ़ाइल में लिख सकते हैं (जैसा कि CreateTextFile विधि में)। आपकी नई फाइल यूटीएफ -8 प्रारूप में होगी। नीचे एक उदाहरण का पालन करें:

'### START 
' ### REMEMBER: You need to create the UTF8FileFormat.txt file in a blank 
' ###   NOTEPAD with UTF-8 Encoding first. 
    Unicode=-1 : ForAppending=8 : NoCreate=False : Overwrite=True 
    set fs = CreateObject("Scripting.FileSystemObject") 
    fs.CopyFile "UTF8FileFormat.txt","MyNewUTF8File.txt",Overwrite 
    set UTF8 = fs.OpenTextFile("MyNewUTF8File.txt", ForAppending, NoCreate) 
    UTF8.writeline "My data can be writed in UTF-8 format now" 
    UTF8.close 
    set UTF8 = nothing 
'### END 
+0

यह सिर्फ बकवास/खतरनाक गलत जानकारी है। एक बाइट एएनएसआई एन्कोडेड स्ट्रिंग में बीओएम तैयार करना ** ** ** जादूगर रूप से इसे यूटीएफ -8 में परिवर्तित नहीं करता है। –

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