Uno de los métodos de importación de contenido más utilizado es el módulo Feeds, que nos permite importar de un modo sencillo desde fuentes de datos csv, xml, ya sean urls o ficheros.
Es habitual encontrarnos con la necesidad de tratar la información de la fuente para adaptarla a nuestro modelo creado en Drupal. Para esto podemos utilizar el módulo Feeds Tamper, que provee plugins para modificar la información antes de guardarlos.
Algunos de los plugins son:
- Explode, que como la función de php nos retorna un array a partir de una cadena, indicando el caracter separador.
- Implode, convierte el array en una cadena.
- Set default, para asignar un valor concreto.
- Conver case, convierte una cadena en "Title Case", "lowe case" o "UPPER CASE".
- etc.
Podéis ver el listado completo en la lista de plugins
Hace un tiempo, nos encontramos con la necesidad de realizar un tratamiento diferente a los disponibles en esta lista.
Estábamos importando contenido en formato csv de una fuente que el fichero viene en Latin1 y los problemas con tildes, ñ y otros caracteres comenzaron a aparecer. Lo ideal es que venga en UTF-8. La solución que adoptamos fue crear un plugin que realizara la conversión del texto de Latin1 a UTF-8, utilizando la función php utf8_encode()
Para ello creamos un nuevo módulo con el nombre tamper_utf8 con los siguientes ficheros: tamper_utf8.info, tamper_utf8.module y plugins/encodeutf8.inc
En tamper_utf8.info destacar que añadimos la dependencia de feeds y feeds tamper
En tamper_utf8.module definimos la función ctools:
/**
* Implements hook_ctools_plugin_directory().
*/
function tamper_utf8_ctools_plugin_directory($module, $plugin) {
if ($module == 'feeds_tamper') {
return 'plugins';
}
}
y en encodeutf8.inc
/**
* @file
* utf8 encode.
*/
$plugin = array(
'form' => 'tamper_utf8_utf8encode_form',
'callback' => 'tamper_utf8_utf8encode_callback',
'name' => 'UTF-8 encode',
'multi' => 'loop',
'category' => 'HTML',
);
function tamper_utf8_utf8encode_form($importer, $element_key, $settings) {
$form = array();
$form['html'] = array(
'#markup' => t('Convert to UTF-8.')
);
return $form;
}
function tamper_utf8_utf8encode_callback($result, $item_key, $element_key, &$field, $settings) {
$field = utf8_encode($field);
}
Lo subimos y activamos y al acceder a la url de Tamper de una importación nos aparece en el select de "Plugin to add" nuestro plugin recién creado: UTF-8 encode.

Sólo queda seleccionarlo, añadirlo y al importar el csv, las cadenas que vienen en Latin1 son convertidas a UTF8 y almacenadas correctamente en nuestros campos drupal.
Espero sirva de ayuda, y si hay alguna consulta deja tu comentario.