drupal 6 node_import ANSI to utf

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

Для этого нужно сделать следующее,в файле node_import.admin.inc найти функцию

function node_import_add_form_submit_upload_file($form, &$form_state) {

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

function node_import_add_form_submit_upload_file($form, &$form_state) {
  $validators = array();
 
  $dest = node_import_directory();
 
  if (($file = file_save_upload('file_upload', $validators, $dest, FILE_EXISTS_RENAME))) {
    drupal_set_message(t('New file %name uploaded to %path.', array('%name' => $file->filename, '%path' => $file->filepath)));
    file_set_status($file, FILE_STATUS_PERMANENT);
    $form_state['values']['fid'] = $file->fid;
  }
 
/*Перекодировка файла если он в cp1251*/
	$fp = fopen($file->filepath, 'r');
	$file1 = '';
	while (! feof($fp)) {
	  $file1 .= fgets($fp, 4096);
	}
	$get  = mb_detect_encoding($file1, array('utf-8', 'cp1251'));
	if($get != "UTF-8") {
		$file_utf = iconv("cp1251","UTF-8", $file1);
		$tmp_file = fopen($file->filepath, 'w+');
		fwrite($tmp_file, $file_utf);
		fclose($tmp_file);
		$fp = fopen($file->filepath, 'r');	
	}
/*\Перекодировка файла если он в cp1251\*/
 
  node_import_add_form_submit_reload($form, $form_state);
}

Рад если кому то помог, рекомендуйте друзьям 😉

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.