2008-09-16 25 views
40

he un archivo guardado como UCS-2 Little Endian Quiero cambiar la codificación por lo que me encontré con el siguiente código:Powershell: Establecimiento de la codificación para la tubería Get-Content

cat tmp.log -encoding UTF8 > new.log 

El archivo resultante se encuentra todavía en UCS -2 Little Endian. ¿Esto es porque la tubería siempre está en ese formato? ¿Hay alguna manera fácil de conectar esto a un nuevo archivo como UTF8?

Respuesta

45

Como sugirió here:.

Get-Content tmp.log | Out-File -Encoding UTF8 new.log 
+0

Gracias por responder a esto ... Me ayudó a resolver un problema al leer un archivo xml codificado en UTF-8 –

+1

Ahora, ¿cómo deshacerse de esa estúpida marca de orden de bytes? – Qwertie

+2

Ver http://stackoverflow.com/questions/5596982/using-powershell-to-write-a-file-in-utf-8-without-the-bom –

17

lo haría así:

get-content tmp.log -encoding Unicode | set-content new.log -encoding UTF8 

Mi entendimiento es que la opción que codifica selecciona el encdoing que el archivo debe ser leído o escrito en

+7

"Get- Ayuda Set-Content "no identifica la codificación como una opción, pero de hecho funciona. – jedatu

+6

@jedatu: Eso es porque este parámetro proviene del proveedor de FileSystem. – Joey

2

carga el contenido del archivo xml con codificación.

(Get-Content -Encoding UTF8 $ archivo)

+1

¡Señor, me salvó! muchas gracias :) – ylka

+0

No use 'Get-Content' para leer archivos XML, ya que esto requiere un conocimiento previo de la codificación del archivo. Es mucho mejor dejar que el analizador XML lea el archivo por sí mismo, ya que esto trata correctamente con cualquier codificación que pueda tener el archivo. '$ xml = (New-Object System.Xml.XmlDocument) .Load ($ fileName)' – Tomalak

1

Si está leyendo un archivo XML, aquí es una mejor manera que se adapta a la codificación del archivo XML:

$xml = New-Object -Typename XML 
$xml.load('foo.xml') 
Cuestiones relacionadas