drupal 6 node_import ANSI to utf-8

Главные вкладки

Аватар пользователя Grenuy Grenuy 26 октября 2012 в 1:20

Решил продублировать статью, думаю многим поможет
Столкнулся с проблемой, нужно было научить node_import на drupal 6 кушать файлы в кодировки ANSI убив несколько часов, решил проблему радикально, в момент загрузки файла определяю если строки в не в UTF-8 то перегнать его в эту кодировку.Для этого нужно сделать следующее,в файле node_import.admin.inc найти функцию

<?php
function node_import_add_form_submit_upload_file($form, &amp;$form_state) {
?>

Заменить ее на следующую функцию

<?php
function node_import_add_form_submit_upload_file($form, &amp;$form_state) {
  
$validators = array();

  

$dest node_import_directory();

  if ((

$file file_save_upload('file_upload'$validators$destFILE_EXISTS_RENAME))) {
    
drupal_set_message(t('New file %name uploaded to %path.', array('%name' =&gt$file-&gt;filename'%path' =&gt$file-&gt;filepath)));
    
file_set_status($fileFILE_STATUS_PERMANENT);
    
$form_state['values']['fid'] = $file-&gt;fid;
  }

/*Перекодировка файла если он в cp1251*/
    
$fp fopen($file-&gt;filepath'r');
    
$file1 '';
    while (! 
feof($fp)) {
      
$file1 .= fgets($fp4096);
    }
    
$get  mb_detect_encoding($file1, array('utf-8''cp1251'));
    if(
$get != "UTF-8") {
        
$file_utf iconv("cp1251","UTF-8"$file1);
        
$tmp_file fopen($file-&gt;filepath'w+');
        
fw«rite($tmp_file$file_utf);
        
fclose($tmp_file);
        
$fp fopen($»file-&gt;filepath'r');    
    }
/*\Перекодировка файла если он в cp1251\*/

  

node_import_add_form_submit_reload($form$form_state);
}
?>

Рад если кому то помог

http://my-opinions.info/drupal/drupal-6-node_import-ansi-to-utf