kot003, 7.02.2007 - 17:52
Добрый день.
ммм.. что я хотел, а. Вспомнил. У меня в локалке после пережевыывания движка появился символ "п»їп»ї". После недолгих разговоров в аське я разобрался что это несовместимость кодировок. У меня получаются измененные файлы в uft8 а сам движок в windows1251.
Так вот, подскажите как заныкать этот символ / подавить / перекодировать в windows1251 ВСЕ файлы (их там ~ 1000)????
Уж очень некрасив он
Движок e107
PS: редактировал файлы прогой NotePad++
Если сунул тему не туда, ногами не пинать, сам долго думал куда ее поставить
дымчик, 8.02.2007 - 18:53
Написать небольшой скриптик, который все файлы в директории и поддиректориях перекодирует из 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);
}
}
kot003, 8.02.2007 - 19:25
А можно готовый скриптик?
А то у меня мозгов нехватает доделать его, поправить кусок движка в другом редакторе удалось, а дописать никак
дымчик, 9.02.2007 - 2:47
Вот должно получиться что-то похожее на это. К сожалению не тестировал - некогда. Но работать должно.
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. Может завтра оттестирую...
kot003, 14.02.2007 - 18:55
Мне тут друг тожа что-то написал, с 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!";
?>
Добавлено:А этот символ можно просто заткнуть, чтобы он не появлялся, ну в код вписать типа если появляется этот символ значит его не показывать?
kot003, 25.02.2007 - 11:04
Справилсо с проблемой путем пропуска файлов через Notepad++ и изменения кодировки с UFT-8 на ANSI. Дымчику спасибо за помощь.