Cách dễ nhất để chuyển đổi XML từ UTF16 sang tệp được mã hóa UTF8 là gì?Chuyển đổi xml từ UTF-16 sang UTF-8 bằng PowerShell
Trả lời
Đây có thể không phải là tối ưu nhất, nhưng nó hoạt động. Đơn giản chỉ cần tải xml và đẩy nó trở lại vào một tập tin. tiêu đề xml bị mất mặc dù vậy, điều này phải được thêm lại.
$files = get-ChildItem "*.xml"
foreach ($file in $files)
{
[System.Xml.XmlDocument]$doc = new-object System.Xml.XmlDocument;
$doc.set_PreserveWhiteSpace($true);
$doc.Load($file);
$root = $doc.get_DocumentElement();
$xml = $root.get_outerXml();
$xml = '<?xml version="1.0" encoding="utf-8"?>' + $xml
$newFile = $file.Name + ".new"
Set-Content -Encoding UTF8 $newFile $xml;
}
Vâng, tôi đoán là cách đơn giản nhất là chỉ cần không quan tâm về việc liệu các tập tin là XML hay không và chỉ đơn giản là chuyển đổi:
Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo
này sẽ chỉ làm việc cho XML khi không có
<?xml version="1.0" encoding="UTF-16"?>
dòng.
Nếu bạn muốn làm điều đó mà không cần tạo một tệp mới, bạn có thể bao bọc nội dung trong dấu ngoặc đơn: (Get-Content File.foo) | Set-Content -Encoding UTF8 File.foo – Jaykul
Làm thế nào để bạn làm điều này cho các tập tin trong một thư mục và thư mục con? – stormwild
'gci -rec -fi * | % {(gc $ _ -enc unicode) | set-content -enc utf8 $ _. fullname} '. Khá đơn giản, thực sự. – Joey
Hãy thử giải pháp này sử dụng một XmlWriter
:
$encoding="UTF-8" # most encoding should work
$files = get-ChildItem "*.xml"
foreach ($file in $files)
{
[xml] $xmlDoc = get-content $file
$xmlDoc.xml = $($xmlDoc.CreateXmlDeclaration("1.0",$encoding,"")).Value
$xmlDoc.save($file.FullName)
}
Bạn có thể muốn nhìn vào XMLDocument
cho lời giải thích thêm về CreateXmlDeclaration
.
Cảm ơn bạn rất nhiều vì đã quan tâm đến việc cung cấp câu trả lời ngắn gọn, kỹ thuật, tốt hơn cho câu hỏi cũ như vậy! – gimpf
Tôi phải hoàn thành và tôi đã tìm thấy giải pháp này ngay cả trước khi nhìn thấy câu hỏi này. Tôi cảm thấy bình thường khi cung cấp nó. Với ít nỗ lực, ai đó thậm chí có thể sử dụng nó để sao chép trong khi chuyển đổi mã hóa các tệp. Trân trọng. – LMA1980
- 1. Chuyển đổi UTF8 sang UTF16 bằng cách sử dụng biểu tượng
- 2. Chuyển đổi bảng mysql từ latin1 sang utf8
- 3. Chuyển đổi XML sang CSV bằng Javascript
- 4. Chuyển đổi XML sang JSON bằng R
- 5. Làm thế nào để chuyển đổi mảng utf16 ushort thành chuỗi utf8 std ::?
- 6. Chuyển đổi JSON sang XML
- 7. Chuyển đổi XML bất hợp pháp & char thành utf8 - python
- 8. Chuyển đổi utf8 sang latin1 bằng PHP. Tất cả các ký tự trên 255 chuyển sang tham chiếu char
- 9. Chuyển đổi HTML sang XML
- 10. Powershell: Chuyển đổi XML thành chuỗi
- 11. Làm thế nào để chuyển đổi ISO8859-15 sang UTF8?
- 12. Chuyển đổi XML sang cơ sở dữ liệu bằng Java
- 13. Sao chép từ tệp xml này sang tệp khác - powershell
- 14. Chuyển đổi tệp từ Windows sang UNIX thông qua Powershell hoặc Lô
- 15. Làm thế nào để chuyển đổi một chuỗi từ UTF8 sang Latin1 trong C/C++?
- 16. Có cách nào để chuyển đổi từ UTF8 sang iso-8859-1 không?
- 17. Chuyển đổi latin1 thành UTF8
- 18. Chuyển đổi thời gian Unix bằng PowerShell
- 19. Làm thế nào để chuyển đổi (chuyển ngữ) một chuỗi từ utf8 sang ASCII (byte đơn) trong C#?
- 20. Chuyển đổi danh sách sang từ điển bằng Python
- 21. Chuyển đổi từ Kanji sang romaji bằng Java thuần túy?
- 22. Cách chuyển đổi từ char * sang id * bằng ARC bật
- 23. Chuyển đổi codicoint unicode thành UTF8 hex trong python
- 24. Cập nhật các tệp XML bằng PowerShell
- 25. Cách lấy Giá trị từ xml bằng PowerShell?
- 26. Chuyển đổi XML sang văn bản đã thoát trong XSLT
- 27. java: cách chuyển đổi tệp thành utf8
- 28. golang chuyển đổi iso8859-1 thành utf8
- 29. Chuyển đổi XML bằng XSLT trong PHP
- 30. Chuyển đổi Word docx sang Excel bằng OpenXML
Bạn không nên đặt mã hóa một cách rõ ràng để lưu ở đâu đó? – Joey
Nếu tôi biết làm thế nào, tôi sẽ. Nó có vẻ là mặc định. –
-Thông số mã hóa. – JasonMArcher