साथ सही ढंग से स्थिति के बाद:पढ़ें UTF-8 फ़ाइलें PowerShell
- एक PowerShell स्क्रिप्ट UTF-8 एन्कोडिंग वाली फ़ाइल बनाता है
- उपयोगकर्ता या फ़ाइल, संभवतः बीओएम खोने को संपादित नहीं हो सकता है, लेकिन UTF-8 के रूप में एन्कोडिंग रखना चाहिए, और संभवतः पंक्ति विभाजक
- ही PowerShell स्क्रिप्ट फ़ाइल पढ़ता बदल रहा है, कुछ और अधिक सामग्री कहते हैं और के रूप में UTF-8 वापस एक ही फाइल को
- यह दोहराया जा सकता है यह सब लिखते हैं कई बार
Get-Content
और Out-File -Encoding UTF8
के साथ मुझे इसे सही तरीके से पढ़ने में समस्याएं हैं। यह बीओएम पर ठोकर खा रहा है, जिसने इसे लिखा है (इसे सामग्री में डालने, मेरे पार्सिंग रेगेक्स को तोड़ने), यूटीएफ -8 एन्कोडिंग का उपयोग नहीं करता है और मूल सामग्री भाग में लाइन ब्रेक भी हटा देता है।
मुझे ऐसे फ़ंक्शन की आवश्यकता है जो यूटीएफ -8 एन्कोडिंग के साथ किसी भी फ़ाइल को पढ़ सके, बीओएम को अनदेखा और हटाएं और सामग्री को संशोधित न करें। मुझे क्या उपयोग करना चाहिए?
अद्यतन
मैं पता चलता है कि मैं क्या करने की कोशिश कर रहा हूँ और क्या एक छोटे से परीक्षण स्क्रिप्ट को शामिल किया है बजाय होता है।
# Read data if exists
$data = ""
$startRev = 1;
if (Test-Path test.txt)
{
$data = Get-Content -Path test.txt
if ($data -match "^[0-9-]{10} - r([0-9]+)")
{
$startRev = [int]$matches[1] + 1
}
}
Write-Host Next revision is $startRev
# Define example data to add
$startRev = $startRev + 10
$newMsgs = "2014-04-01 - r" + $startRev + "`r`n`r`n" + `
"Line 1`r`n" + `
"Line 2`r`n`r`n"
# Write new data back
$data = $newMsgs + $data
$data | Out-File test.txt -Encoding UTF8
यह कई बार चलाने के बाद, नए वर्गों फ़ाइल की शुरुआत में जोड़ा जाना चाहिए, मौजूदा सामग्री किसी भी तरह का बदलाव नहीं किया जाना चाहिए (वर्तमान पंक्ति विराम खो देता है) और कोई अतिरिक्त नई लाइनों जोड़ा जाना चाहिए फ़ाइल के अंत में (कभी-कभी ऐसा लगता है)।
इसके बजाए, दूसरा रन मुझे एक त्रुटि देता है।
मैं पूरी एन्कोडिंग विषय के साथ महान नहीं कर रहा हूँ, लेकिन आप फिर से सुई बीओएम नहीं होती है, तो इसे हटा दिया जाता है, इसे ठीक से पढ़ने के लिए? मैं सवाल से थोड़ा उलझन में हूँ। आप यूटीएफ -8 बीओएम को क्यों हटाना चाहते हैं? –
मेरा टेक्स्ट एडिटर बेवकूफ है और इसे हटा देता है। वैसे भी आप कभी नहीं जानते कि पाठ संपादक यूटीएफ -8 फाइलों के साथ क्या करते हैं। मेरी स्क्रिप्ट को इसे संभालने के लिए बस इतना स्मार्ट होना चाहिए। StreamReader क्लास की तरह यह बहुत अच्छी तरह से करता है। – ygoe