EDITAR: Una posibilidad simple de eliminar antes de entrar en soluciones más complicadas: ¿ha intentado configurar el conjunto de caracteres en utf8 en el editor de texto en el que está leyendo el archivo? Esto podría ser solo el caso de alguien enviándole un archivo utf8 que está leyendo en un editor configurado para decir cp1252.
Simplemente tomando los dos ejemplos, este es un caso de lectura de utf8 a través de la lente de una codificación de un solo byte, probablemente una de iso-8859-1, iso-8859-15 o cp1252. Si puede publicar ejemplos de otros personajes problemáticos, debería ser posible reducirlo más.
Como la inspección visual de los caracteres puede ser engañosa, también tendrá que mirar los bytes subyacentes: el § que ve en la pantalla podría ser 0xa7 o 0xc2a7, y eso determinará el tipo de conversión de conjunto de caracteres que Tener que hacer.
¿Puede suponer que todos sus datos se han distorsionado exactamente de la misma manera? Que provienen de la misma fuente y pasaron por la misma secuencia de transformaciones, por lo que, por ejemplo, no hay una sola é en su texto, siempre es ç? Si es así, el problema se puede resolver con una secuencia de conversiones de juegos de caracteres. Si puede ser más específico sobre el entorno en el que se encuentra y la base de datos que está utilizando, es posible que alguien aquí le indique cómo realizar la conversión adecuada.
De lo contrario, si los caracteres problemáticos solo aparecen en algunos lugares de sus datos, deberá tomarlos instancia por instancia, basándose en suposiciones como "ningún autor tiene la intención de poner ç en su texto, así que cada vez que lo veas, reemplaza por ç ". La última opción es más arriesgada, en primer lugar porque esas suposiciones sobre las intenciones de los autores pueden ser erróneas, en segundo lugar porque tendrá que detectar a cada personaje problemático usted mismo, lo que podría ser imposible si hay demasiado texto para inspeccionar visualmente o si está escrito en un idioma o sistema de escritura que sea extraño para usted.
¿Conoces la codificación original del archivo (suponiendo que se haya convertido en algún punto de un juego de caracteres a otro)? De ser así, debería poder asignar los caracteres resultantes a los caracteres originales utilizando tablas como [esta] (http://www.alanwood.net/demos/charsetdiffs.html). Si no conoce la codificación original, probablemente pueda resolverla utilizando un enfoque probabilístico, basado en la frecuencia de las diferentes palabras en el idioma con el que está trabajando. Pero puede que no estés dispuesto a poner en el trabajo que requeriría. – gregory
Lamentablemente, no, no sé la codificación original. Es un problema común cuando los clientes le envían archivos creados en una variedad de sistemas. Es posible que no sepan qué es la codificación de caracteres. Tenga en cuenta que la creciente adopción de escritorios Linux que usan UTF-8 de forma predeterminada podría reducir este problema de forma transparente. – Liam
Estoy totalmente de acuerdo. UTF-8 es definitivamente la codificación más razonable para usar en la mayoría de las situaciones, pero no se puede esperar que los clientes comprendan o actúen sobre eso, desafortunadamente. – gregory