Estoy extrayendo texto de sitios remotos e intentando cargarlo en una aplicación Ruby 1.9/Rails 3 que usa utf-8 de manera predeterminada.Convertir caracteres no ASCII de ASCII-8BIT a UTF-8
Aquí es un ejemplo de un texto infractor:
miradasCancer Res; 71(3); 1-11. ©2011 AACR.\n
Ese código de derechos de autor se expandió como este:
Cancer Res; 71(3); 1-11. \xC2\xA92011 AACR.\n
Rubí me dice que la cadena está codificado como ASCII-8BIT y alimentar a mi La aplicación Rails me ofrece esto:
incompatible character encodings: ASCII-8BIT and UTF-8
Puedo quitar el código de copyright usando este re Gex
str.gsub(/[\x00-\x7F]/n,'?')
para producir este
Cancer Res; 71(3); 1-11. ??2011 AACR.\n
Pero, ¿cómo puedo obtener un símbolo de copyright (y varios otros símbolos, como letras griegas) convierte en los mismos símbolos en UTF-8? Seguramente es posible ...
veo referencias a la utilización de force_encoding pero esto no funciona:
str.force_encoding('utf-8').encode
Sé que existen muchas otras personas con problemas similares, pero todavía tengo que ver una solución que trabajos.
¿Cómo saca el texto de los sitios remotos? Raspado de páginas? Muestre algunos ejemplos de código, incluido el cliente HTTP que está utilizando, y si está analizando las páginas con Nokogiri, Hpricot o ReXML. Este problema podría deberse a cómo está recuperando la página y a cómo está analizando la página. Una vez que sepamos que está extrayendo el contenido de una manera segura para los datos, podemos ayudarlo a convertir los datos entre los conjuntos de códigos. –
Código simple real - open-uri y nokogiri - p. doc = Nokogiri :: XML (abrir (url)) luego doc.css (...). texto para extraer los bloques de texto relevantes –
Mostrar código de muestra. ¿El archivo está recuperando HTML o XML? Nokogiri se preocupa por la diferencia al analizar. Además, proporcione algunas URL porque cada sitio en Internet es diferente. –