¿Cómo recuperar los datos de utf-8 con php y mostrar la encoding correcta en un volcado Excel excelente?

Hola, estoy guardando principalmente caracteres ingleses y alemanes en una base de datos mysql que actualmente está configurada para utf-8 charset.

Supongo que debería usar latin1 charset para este tipo de datos, ¿es correcto?

Si es así, ¿cómo puedo cambiar el juego de caracteres para corregir los caracteres alemanes que ahora están guardados en utf-8?

ACTUALIZAR

Tal vez sea un problema de recuperación … Cuando exporto datos desde el db a través de php, por supuesto, recupero el utf-8, ¿puedo hacer la recuperación para darme Latin1?

ACTUALIZACIÓN 1

Ok, estoy construyendo un sitio web, la encoding html es uft-8, el db es uft-8, y ahora quiero ejecutar algunas exportaciones y extraer datos, que deberían ser devueltos en una hoja de Excel, y los datos son utf-8, pero aquí necesito que los caracteres sean latin1 … o la encoding de la hoja de Excel extraída del archivo db debe ser tal que Töst muestre Täst. Ahora mismo obtengo los datos así -> Töst

ACTUALIZACIÓN 2

Estoy usando el siguiente script php para hacer el volcado:

http://www.fundisom.com/phparadise/php/databases/mySQL_to_excel

en la línea 48 he cambiado el código a

header("Content-Type: application/$file_type; charset=utf-8"); 

sin cambio en el comportamiento

¿Cómo resolvería el problema?

Casi solución

  

esto es lo que necesito, creo … pero necesito verificarlo en el contexto del script php … mañana 🙂

Estoy de acuerdo con las respuestas anteriores de que UTF-8 es una buena opción para la mayoría de las aplicaciones.

Sin embargo, ¡ten cuidado con las trampas que podrían estar esperándote! Deberá tener cuidado de usar una encoding de caracteres consistente en todo su sistema (formularios de entrada, páginas web de salida, otras interfaces que puedan acceder o cambiar los datos).

He pasado algunas horas desagradables tratando de descubrir por qué un simple β o é fue destrozado en mi página web, solo para descubrir que algo en alguna parte había alterado una encoding. Incluso he visto casos de texto que se ejecuta a través de múltiples codificadores, una vez que convierte una comilla simple en ocho bytes.

En pocas palabras, no suponga que se hará la traducción correcta; Sea explícito sobre la encoding de caracteres en todo su proyecto.

Editar: Veo en su actualización que ya ha comenzado a descubrir esta alegría particular. 🙂

Una vez que usa caracteres de doble byte como UTF-8, no hay vuelta atrás …

Cuanto más cerca puedes usar es iconv

Me gusta esto

  

detalles: http://php.net/manual/en/function.iconv.php

Con UTF-8 puede almacenar cualquier carácter admitido por Unicode, con UTF-8 puede almacenar cualquier carácter compatible con Unicode, por lo que no debería tener ningún problema al usarlo para almacenar solo caracteres latin1 (que son solo un subconjunto realmente pequeño de qué es lo que Unicode admite).

Entonces, para el almacenamiento de información estás bien; si necesita realizar conversiones al recuperar los datos, eso depende del conector que use para obtener los datos de la base de datos y de cómo maneja la cadena su lenguaje de progtwigción.


Para la actualización: suponiendo que está utilizando PHP para producir páginas web, ¿no puede simplemente enviar el encabezado HTTP correcto especificando que su página está codificada en UTF8?

UTF-8 es la mejor opción para todos los efectos. A menos que tengas una razón realmente apremiante para buscar Latin1 (por ejemplo, compatibilidad con otras aplicaciones), hazlo.

Hay varias intercalaciones UTF-8 que manejan diéresis y clasifican los pedidos de forma diferente (consulte aquí para obtener una lista). Es posible que deba elegir uno sobre el otro dependiendo de sus requisitos. Sin embargo, todos pueden almacenar diéresis.