129 votos

¿Automáticamente es posible forzar Excel reconoce archivos CSV UTF-8?

Estoy desarrollando una parte de una aplicación que se encarga de la exportación de unos datos en archivos CSV. La aplicación siempre se utiliza UTF-8, debido a su naturaleza multilingüe en todos los niveles. Pero la apertura de esos archivos CSV (que contiene por ejemplo, los signos diacríticos, cirílico letras, las letras griegas) en Excel no lograr los resultados esperados, mostrando algo como Г„/Г¤, Г–/Г¶. Y yo no sé cómo la fuerza de Excel entender que abra el archivo CSV está codificado en UTF-8. También traté de especificar BOM de UTF-8 EF BB BF, pero Excel ignora.

¿Hay alguna solución?

P. S. las herramientas Que potencialmente pueden comportarse como Excel?


ACTUALIZACIÓN

Tengo que decir que me he confundido a la comunidad con la formulación de la pregunta. Cuando yo estaba haciendo esta pregunta, me pidió una manera de abrir un UTF-8 archivo CSV en Excel sin ningún tipo de problemas para un usuario, en una fluida y transparente. Sin embargo, he utilizado una incorrecta formulación pidiendo para hacerlo automáticamente. Que es muy confuso y enfrentamientos con la macro de VBA de automatización. Hay dos respuestas para esta pregunta que me aprecian al máximo: la primera respuesta, por Alex http://stackoverflow.com/a/6002338/166589y he aceptado esta respuesta; y el segundo por Marca http://stackoverflow.com/a/6488070/166589 que han aparecido un poco más tarde. A partir de la usabilidad punto de vista, Excel parecía tener la falta de un buen user-friendly UTF-8 CSV apoyo, por lo que considero que ambas respuestas son correctas, y he aceptado Alex de la respuesta de la primera, porque es realmente declaró que Excel no fue capaz de hacerlo de forma transparente. Eso es lo que me confunde con automáticamente aquí. Marca la respuesta que promueve una más complicado para los usuarios más avanzados para alcanzar el resultado esperado. Ambas respuestas son grandes, pero Alex se adapte a mi no se especifica claramente la pregunta un poco mejor.


ACTUALIZACIÓN 2

Cinco meses más tarde, después de la última edición, me he dado cuenta de que Alex de la respuesta ha desaparecido por alguna razón. Realmente espero que no era un problema técnico y espero que no hay más discusión en la que la respuesta es mayor ahora. Así que estoy aceptando Marca la respuesta como la mejor.

153voto

Mark Puntos 816

Alex es la correcta, pero como tiene que exportar a csv, puede dar a los usuarios de este consejo cuando la apertura de los archivos csv:

  1. Guardar el archivo exportado como un archivo csv
  2. Abra Excel
  3. Importación de los datos utilizando los Datos-->Importar Datos Externos --> Importar Datos
  4. Seleccione el tipo de archivo "csv" y busque el archivo
  5. En el asistente para importación de cambiar el File_Origin "65001 UTF" (o seleccione idioma correcto carácter identificador)
  6. Cambiar el Delimitador de coma
  7. Seleccione el origen de la importación y Acabado

De esta manera los caracteres especiales deben mostrar correctamente.

51voto

StriplingWarrior Puntos 56276

El UTF-8 Byte de orden marcador pista de Excel 2007+ en el hecho de que estás usando la codificación UTF-8. (Véase esta MANERA posterior).

En caso de que alguien está teniendo los mismos problemas que yo era, .NETO de la codificación UTF8 clase no emite una orden de bytes marcador, incluso cuando su constructor está explícitamente dicho. Usted tiene que usar esta solución si queremos realmente salvarlo con un orden de bytes marcador.

34voto

sshturma Puntos 188

El fallo con BOM ignorado parece fijarse para Excel 2013. Tuve el mismo problema con letras cirílicas, pero agregando carácter BOM \uFEFF ayudó.

8voto

Steve Jessop Puntos 166970

He tenido el mismo problema en el pasado (cómo producir los archivos de Excel se pueden leer, y otras herramientas que también pueden leer). Yo estaba usando TSV en lugar de CSV, pero el mismo problema con las codificaciones de vino.

No he logrado encontrar ninguna manera de conseguir que Excel reconoce UTF-8 de forma automática, y yo no estaba dispuesto/capaces de infligir sobre los consumidores de los archivos de complicadas instrucciones de cómo abrir. Así que me codificado como UTF-16le (con un BOM) en lugar de UTF-8. El doble del tamaño, pero de Excel, se puede reconocer la codificación. Y comprimen bien, así que el tamaño rara vez (pero no, por desgracia nunca).

8voto

Ixtlilton Puntos 61

Tenía los mismos problemas con archivos CSV generados por PHP. Cuando el separador se definió mediante Excel ignora la LDM "sep =, \n" al principio del contenido (pero por supuesto después de la LDM). So añadiendo un BOM ("\xEF\xBB\xBF") al principio del contenido + ajuste el punto y coma como separador de via fputcsv ($fh, $data_array, ";"); hace el truco.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X