Как сделать перекодировку

W
На сайте с 05.07.2006
Offline
35
771

Есть дамп БД с кодировкой UTF . Можно ли как то поменять кодировку на cp1251 ?

SS
На сайте с 10.02.2007
Offline
1
#1

можно

PHP

function u8($win,$h,$t)
{
global $w8;
$w8[chr($h).chr($t)] = $win;
}

function utf2win($text)
{
global $c1,$c2,$w8;
$c1 = chr(208);
$c2 = chr(209);
u8("й",208,185); u8("ц",209,134); u8("у",209,131);
u8("к",208,186); u8("е",208,181); u8("н",208,189);
u8("г",208,179); u8("ш",209,136); u8("щ",209,137);
u8("з",208,183); u8("х",209,133); u8("ъ",209,138);
u8("ф",209,132); u8("ы",209,139); u8("в",208,178);
u8("а",208,176); u8("п",208,191); u8("р",209,128);
u8("о",208,190); u8("л",208,187); u8("д",208,180);
u8("ж",208,182); u8("э",209,141); u8("я",209,143);
u8("ч",209,135); u8("с",209,129); u8("м",208,188);
u8("и",208,184); u8("т",209,130); u8("ь",209,140);
u8("б",208,177); u8("ю",209,142); u8("Й",208,153);
u8("Ц",208,166); u8("У",208,163); u8("К",208,154);
u8("Е",208,149); u8("Н",208,157); u8("Г",208,147);
u8("Ш",208,168); u8("Щ",208,169); u8("З",208,151);
u8("Х",208,165); u8("Ъ",208,170); u8("Ф",208,164);
u8("Ы",208,171); u8("В",208,146); u8("А",208,144);
u8("П",208,159); u8("Р",208,160); u8("О",208,158);
u8("Л",208,155); u8("Д",208,148); u8("Ж",208,150);
u8("Э",208,173); u8("Я",208,175); u8("Ч",208,167);
u8("С",208,161); u8("М",208,156); u8("И",208,152);
u8("Т",208,162); u8("Ь",208,172); u8("Б",208,145);
u8("Ю",208,174); u8("ё",209,145); u8("Ё",208,129);
$u = false;
$temp = "";
for($i=0,$len=strlen($text); $i<$len; $i++)
{
$c = substr($text,$i,1);
if ($u)
{
$c = $w8[$lc.$c];
$temp .= isset($c)?$c:"?";
$u = false;
}
else if ($c==$c1 || $c==$c2)
{
$u = true;
$lc = $c;
}
else
$temp .= $c;
}
return $temp;
}

$cp_text = utf2win($text);

Выбираем с базы данные.. пропускаем через функцию... заносим обратно...

Израильский портал (http://ashdoda.net) - Web default and Development in Israel (http://www.spaiz.net)
D
На сайте с 19.05.2006
Offline
38
#2

Варианты - функция iconv(), она же iconv -f ... -t ... < file > file2 в шелле.

И в дампе могут создаваться таблицы с умолчальной кодировкой UTF (искать DEFAULT CHARSET, SET NAMES и COLLATION)

Mmonger
На сайте с 01.12.2005
Offline
165
#3

А принципиально ли делать это именно на сервере? Можно просто в UltraEdit загнать дамп и, используя встроенные функции для конвертации, переконветировать и сохранить файл.

Всё будет хорошо, но мы приложим усилия!
deleon
На сайте с 16.09.2004
Offline
173
#4

Еще как вариант:

function utf8_win1251($fcontents)

{
$out = $c1 = '';
$byte2 = false;
for ($c = 0;$c < strlen($fcontents);$c++) {
$i = ord($fcontents[$c]);
if ($i <= 127) {
$out .= $fcontents[$c];
}
if ($byte2) {
$new_c2 = ($c1 & 3) * 64 + ($i & 63);
$new_c1 = ($c1 >> 2) & 5;
$new_i = $new_c1 * 256 + $new_c2;
if ($new_i == 1025) {
$out_i = 168;
} else {
if ($new_i == 1105) {
$out_i = 184;
} else {
$out_i = $new_i - 848;
}
}
$out .= chr($out_i);
$byte2 = false;
}
if (($i >> 5) == 6) {
$c1 = $i;
$byte2 = true;
}
}
return $out;
};

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий