¿Cuál es la forma más fácil de convertir XML de UTF16 a un archivo codificado en UTF8?Convertir xml de UTF-16 a UTF-8 usando PowerShell
Respuesta
Esto puede no ser el más óptimo, pero funciona. Simplemente cargue el xml y vuelva a colocarlo en un archivo. sin embargo, se pierde el encabezado xml, por lo que debe volverse a agregar.
$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;
}
Bueno, supongo que la forma más fácil es simplemente no se preocupan por si el archivo es XML o no y simplemente convertir:
Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo
Esto sólo funcionará para XML cuando no hay
<?xml version="1.0" encoding="UTF-16"?>
línea.
Si desea hacerlo sin crear un archivo nuevo, puede envolver el contenido get entre paréntesis: (Get-Content File.foo) | Set-Content -Encoding UTF8 File.foo – Jaykul
¿Cómo se hace esto para los archivos en un directorio y subdirectorios? – stormwild
'gci -rec -fi * | % {(gc $ _ -enc unicode) | set-content -enc utf8 $ _. fullname} '. Bastante sencillo, en realidad. – Joey
Revise la solución que utiliza una 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)
}
Es posible que desee ver en XMLDocument
para una explicación más detallada sobre CreateXmlDeclaration
.
¡Muchas gracias por preocuparse por proporcionar una respuesta tan breve y técnicamente mejor a una pregunta tan antigua! – gimpf
Tuve que hacerlo y encontré esta solución incluso antes de ver esta pregunta. Sentí que era normal ofrecerlo. Con poco esfuerzo, alguien incluso puede usarlo para copiar mientras convierte la codificación de los archivos. Saludos. – LMA1980
- 1. Convierta UTF8 a UTF16 con iconv
- 2. Cómo convertir UTF8 a Unicode
- 3. ¿Convertir cadena latin1 a utf8?
- 4. ¿Cómo edito XML usando Powershell?
- 5. ¿Cómo generar un archivo codificado en UTF16 como ascii (o UTF8) en el símbolo del sistema de PowerShell?
- 6. cómo convertir XML a JSON usando jQuery
- 7. MySQL Convertir datos latin1 a UTF8
- 8. java: cómo convertir un archivo a utf8
- 9. Cómo convertir ISO8859-15 a UTF8?
- 10. Cómo convertir una cadena a UTF8?
- 11. Convertir XML a psobject
- 12. ¿Cómo convertir múltiples archivos xls a csv usando powershell?
- 13. PowerShell - Convertir ticks a tiempo
- 14. Convertir tablas de mysql de latin1 a utf8
- 15. XML para la tabla de hash usando Powershell
- 16. grepping archivos binarios y UTF16
- 17. Cómo convertir listas de objetos a documentos XML usando XStream
- 18. PHP: convertir la salida de curl_exec a UTF8
- 19. UTF8 vs. UTF16 vs. char * ¿contra qué? ¡Alguien me explique este lío!
- 20. escritura utf16 a archivo en modo binario
- 21. ¿Cómo puedo usar vim para convertir mi archivo a utf8?
- 22. ¿Convertir cadena ISO8859 a UTF8? ÄÖÜ => ¿Por qué?
- 23. ¿por qué el Xdocument me da una declaración utf16?
- 24. Convertir xml a Java Bean
- 25. Convertir archivo CSV a XML
- 26. Convertir XML a formato JSON
- 27. Convertir archivo txt a csv en powershell
- 28. PowerShell convertir Char Array a la cadena
- 29. Convertir objeto Scala a XML
- 30. Convertir UTF8 en valores numéricos en Perl
¿No debería configurar explícitamente la codificación para guardar en alguna parte? – Joey
Si supiera cómo, lo haría. Aunque parece ser el predeterminado. –
-Elemento de codificación. – JasonMArcher