estoy leyendo archivos en varios formatos e idiomas y actualmente estoy usando una pequeña biblioteca de codificación para tomar intento de detectar la codificación correcta (http://www.codeproject.com/KB/recipes/DetectEncoding.aspx).C#: Ciclo a través de codificaciones
Es bastante bueno, pero todavía falla de vez en cuando. (Archivos multilingües)
La mayoría de mis usuarios potenciales tienen muy poca comprensión de la codificación (lo mejor que puedo esperar es "tiene algo que ver con los caracteres") y es poco probable que puedan elegir la codificación correcta en una lista, por lo que me gustaría dejar que pasen por diferentes codificaciones hasta encontrar la correcta con solo hacer clic en un botón.
¿Problemas en la pantalla? ¡Haga clic aquí para probar una codificación diferente! (Bueno, eso es el concepto de todos modos)
¿Cuál sería la mejor manera de poner en práctica algo por el estilo?
Editar: Parece que no me expresé con la suficiente claridad. Al "recorrer la codificación", no me refiero a "¿cómo recorrer las codificaciones?"
Lo que quería decir "cómo hacer que el usuario intente diferentes codificaciones en secuencia sin volver a cargar el archivo?"
La idea es más como esto: Digamos que el archivo está cargado con la codificación incorrecta. Se muestran algunos caracteres extraños. El usuario haría clic en un botón "Siguiente codificación" o "codificación previa", y la cadena se convertiría en una codificación diferente. El usuario solo necesita seguir haciendo clic hasta que se encuentre la codificación correcta. (Cualquier codificación que se vea bien para el usuario funcionará bien). Siempre que el usuario pueda hacer clic en "siguiente", tiene una posibilidad razonable de resolver su problema.
Lo que he encontrado hasta ahora implica convertir la cadena a bytes utilizando la codificación actual, luego convertir los bytes a la siguiente codificación, convertir esos bytes en caracteres, y luego convertir el carácter en una cadena ... Posible, pero yo pregunto si no hay una manera más fácil de hacer eso.
Por ejemplo, si había un método que leer una cadena y lo devuelve usando una codificación diferente, algo así como "render (cadena, codificación)".
Muchas gracias por las respuestas!
Técnicamente, un archivo codificado en UTF-8 no necesita una lista de materiales. Incluso se desaconseja, ya que interferirá con las aplicaciones que esperan que los datos ASCII comiencen con ciertos caracteres, como "#!" al comienzo de los scripts de shell de Unix. –