day & night

Подавление несовместимости кодировок, убрать символ
Дата обновления: , перейти к новому сообщению
#1
kot003



Специалист
****

Группа: Пользователи
Сообщений: 360
Регистрация: 19.03.2005
Из: Санкт-Петербург
Пользователь №: 9.192


Респектов: 5
-----X----


Предупреждений:


Добрый день.
ммм.. что я хотел, а. Вспомнил. У меня в локалке после пережевыывания движка появился символ "п»їп»ї". После недолгих разговоров в аське я разобрался что это несовместимость кодировок. У меня получаются измененные файлы в uft8 а сам движок в windows1251.

Так вот, подскажите как заныкать этот символ / подавить / перекодировать в windows1251 ВСЕ файлы (их там ~ 1000)????
Уж очень некрасив он

Движок e107 biggrin.gif

PS: редактировал файлы прогой NotePad++

Если сунул тему не туда, ногами не пинать, сам долго думал куда ее поставить smile.gif
User is offline
Go topGo end
 

Ответов(1 - 5)
icon11 8.02.2007 - 18:53
#2
дымчик



Специалист
[SoftoRooMTeaM] Group Icon

Группа: Модераторы
Сообщений: 475
Регистрация: 8.11.2005
Из: Санкт-Петербург
Пользователь №: 64.615


Респектов: 154
-----X----




Написать небольшой скриптик, который все файлы в директории и поддиректориях перекодирует из utf8 в win1251...

Вот функция для преобразования кодировок:
CODE

// ПРЕОБРАЗОВАНИЕ КОДИРОВКИ UTF-8 -> WIN1251

// static

function u2w($input = '') {
 
      $array            = array(
  "\xD0\x90" => "\xC0", "\xD0\x91" => "\xC1",      
       "\xD0\x92" => "\xC2", "\xD0\x93" => "\xC3",      
       "\xD0\x94" => "\xC4", "\xD0\x95" => "\xC5",
  "\xD0\x81" => "\xA8", "\xD0\x96" => "\xC6",
  "\xD0\x97" => "\xC7", "\xD0\x98" => "\xC8",
  "\xD0\x99" => "\xC9", "\xD0\x9A" => "\xCA",
  "\xD0\x9B" => "\xCB", "\xD0\x9C" => "\xCC",
  "\xD0\x9D" => "\xCD", "\xD0\x9E" => "\xCE",
  "\xD0\x9F" => "\xCF", "\xD0\xA0" => "\xD0",
  "\xD0\xA1" => "\xD1", "\xD0\xA2" => "\xD2",
  "\xD0\xA3" => "\xD3", "\xD0\xA4" => "\xD4",
  "\xD0\xA5" => "\xD5", "\xD0\xA6" => "\xD6",
  "\xD0\xA7" => "\xD7", "\xD0\xA8" => "\xD8",
  "\xD0\xA9" => "\xD9", "\xD0\xAA" => "\xDA",
  "\xD0\xAB" => "\xDB", "\xD0\xAC" => "\xDC",
  "\xD0\xAD" => "\xDD", "\xD0\xAE" => "\xDE",
  "\xD0\xAF" => "\xDF", "\xD0\x87" => "\xAF",
  "\xD0\x86" => "\xB2", "\xD0\x84" => "\xAA",
  "\xD0\x8E" => "\xA1", "\xD0\xB0" => "\xE0",
  "\xD0\xB1" => "\xE1", "\xD0\xB2" => "\xE2",
  "\xD0\xB3" => "\xE3", "\xD0\xB4" => "\xE4",
  "\xD0\xB5" => "\xE5", "\xD1\x91" => "\xB8",
  "\xD0\xB6" => "\xE6", "\xD0\xB7" => "\xE7",
  "\xD0\xB8" => "\xE8", "\xD0\xB9" => "\xE9",
  "\xD0\xBA" => "\xEA", "\xD0\xBB" => "\xEB",
  "\xD0\xBC" => "\xEC", "\xD0\xBD" => "\xED",
  "\xD0\xBE" => "\xEE", "\xD0\xBF" => "\xEF",
  "\xD1\x80" => "\xF0", "\xD1\x81" => "\xF1",
  "\xD1\x82" => "\xF2", "\xD1\x83" => "\xF3",
  "\xD1\x84" => "\xF4", "\xD1\x85" => "\xF5",
  "\xD1\x86" => "\xF6", "\xD1\x87" => "\xF7",
  "\xD1\x88" => "\xF8", "\xD1\x89" => "\xF9",
  "\xD1\x8A" => "\xFA", "\xD1\x8B" => "\xFB",
  "\xD1\x8C" => "\xFC", "\xD1\x8D" => "\xFD",
  "\xD1\x8E" => "\xFE", "\xD1\x8F" => "\xFF",
  "\xD1\x96" => "\xB3", "\xD1\x97" => "\xBF",
  "\xD1\x94" => "\xBA", "\xD1\x9E" => "\xA2"
       );
 
   if (is_array($input)) {
 
  foreach ($input as $k => $v) {

           if (is_array($v)) {
   
            $input[$k]         = u2w($v);

           }
           else {
   
            $input[$k]         = strtr($v, $array);
   
           }

      }

      return $input;

   }
   else {

  return strtr($input, $array);

   }
 
}
User is offline
Go topGo end
8.02.2007 - 19:25
#3
kot003



Специалист
****

Группа: Пользователи
Сообщений: 360
Регистрация: 19.03.2005
Из: Санкт-Петербург
Пользователь №: 9.192


Респектов: 5
-----X----


Предупреждений:


А можно готовый скриптик? smile.gif А то у меня мозгов нехватает доделать его, поправить кусок движка в другом редакторе удалось, а дописать никак smile.gif
User is offline
Go topGo end
icon11 9.02.2007 - 2:47
#4
дымчик



Специалист
[SoftoRooMTeaM] Group Icon

Группа: Модераторы
Сообщений: 475
Регистрация: 8.11.2005
Из: Санкт-Петербург
Пользователь №: 64.615


Респектов: 154
-----X----




Вот должно получиться что-то похожее на это. К сожалению не тестировал - некогда. Но работать должно.
CODE

function convert($folderPath, $subFolders = 0, $ext = '') {

   $ext = strtolower(HTMLSpecialChars($ext));

   if (chdir($folderPath = HTMLSpecialChars($folderPath))) {

       $myFolder = opendir(".");

       while (($handler = readdir($myFolder)) !== false) {

           if ($handler == '.' || $handler == '..') continue;

           if (@is_file($handler)) {

               $fName = eregi_replace('^(.*)\\.([^\\.]*)$','\\1',$handler);
               $fExt = eregi_replace('^(.*)\\.([[:alnum:]]*)$','\\2',$handler);

               if (strtolower($fExt) === $ext) {

                   // Файл подходит по расширению для конвертирования

                   doConversion($folderPath.$handler);                    

               }

           }
           elseif (@is_dir($handler) && (int)$subFolders) {

               convert($folderPath.$handler,$subFolders,$ext);

           }

       }

   }
   else {

       echo 'Содержимое каталога не может быть прочитано';

   }

}

function doConversion($path = '') {

    if (($path = HTMLSpecialChars($path)) && @is_file($path)) {

        $f = @fopen($path,"w");

        if (!$f) {

            return false;

        }
        else {

            fwrite($f,u2w(file_get_contents($path)));
            fclose($f);
            return true;

        }

    }

}

P.S. Может завтра оттестирую...
User is offline
Go topGo end
14.02.2007 - 18:55
#5
kot003



Специалист
****

Группа: Пользователи
Сообщений: 360
Регистрация: 19.03.2005
Из: Санкт-Петербург
Пользователь №: 9.192


Респектов: 5
-----X----


Предупреждений:


Мне тут друг тожа что-то написал, с iconv функцией, так после этого ваще файлы пустые остаются. Вот скрипт кста
CODE
<?php
echo "MEGA SUPER BUPER SCRIPT<br>";
echo "Special for kot003<br>";
echo "(C)oded by -=DimonElite=-<br><br>";

function xuck_convert($f) {
echo "Converting ".$f." ... <br>";
$ff = $f . time();
$r = fopen($f,'r');$o = fopen($ff,'w+');
while (!feof($r)) {
$row = fgets($r);
fputs($o,iconv("UTF-8","WINDOWS-1251",$row));
}
fclose($o);fclose($r);
unlink($f);
rename($ff,$f);
}

function DFS($dir) {
$h = opendir($path.$dir);
while (false !== ($file = readdir($h))) {
if (($file!='.')&&($file!='..')&&($file!='iconv.php')) {
 if (is_file($dir.$file) && (substr_count($file,'php')>0)) xuck_convert($dir.$file);
 if (is_dir($dir.$file)) DFS($dir.$file.'/');
}
}
}

echo "Started!";
DFS('./');
echo "Finished!";

?>


Добавлено:

А этот символ можно просто заткнуть, чтобы он не появлялся, ну в код вписать типа если появляется этот символ значит его не показывать?
User is offline
Go topGo end
25.02.2007 - 11:04
#6
kot003



Специалист
****

Группа: Пользователи
Сообщений: 360
Регистрация: 19.03.2005
Из: Санкт-Петербург
Пользователь №: 9.192


Респектов: 5
-----X----


Предупреждений:


Справилсо с проблемой путем пропуска файлов через Notepad++ и изменения кодировки с UFT-8 на ANSI. Дымчику спасибо за помощь. smile.gif
User is offline
Go topGo end

Topic Options
Сейчас: 27.04.2024 - 22:10
Мобильная версия | Lite версия