Преобразование символов

twistfire

Новичок
Преобразование символов

как преобразовать строку?

сейчас в базе появились записи вида: Игры
что нормально означает - Игры..

Как попреобразовывать все символы в нормальные win-1251?
 

twistfire

Новичок
И г р ы
без пробелов

или вот так, без пробелов:
& #1048;& #1075;& #1088;& #1099;

думаю все уже поняли..

-~{}~ 06.04.07 09:37:

просто форум заменяет символы :)
 

twistfire

Новичок
ну добавились в базу так...
откуда я знаю...
просто видно явно, что видать кодировка как-то не совпадала и он влепил какую-то послеовательность - замену...
но в браузере все правильно,
а база раздутая...
 

twistfire

Новичок
извините, если я кого-то обидел...
я не издеваюсь, просто я действительно не знаю :)

скорее всего - такие завписи появляются из текстовых файлов (xml), которые пользователи системы загружают в систему, а она неверно определив кодировку всовывает туда такие последовательности вместо букв...

Я ведб спросил - как преобразовать текст такого вида (в последовательностях) в нормальный...?
 

Фанат

oncle terrible
Команда форума
а разделе "вопрос-ответ" есть подробное руководство
 

twistfire

Новичок
спасибо, Фанат

-~{}~ 06.04.07 16:26:

Только вот прочел там (http://phpclub.ru/faq/wakka.php?wakka=encodings/encodings4&v=336)

про преобразование из юникод в вин1251 -
http://phpclub.ru/faq/wakka.php?wakka=encodings/encodings3

попробовал - ничего..
как были эти последовательности..
так и остались...

может кто подскажет как избавиться от них? как преобразовать в обычный cp1251?

-~{}~ 06.04.07 16:27:

function UTF8toCP1251($str){ // by SiMM, $table from http://ru.wikipedia.org/wiki/CP1251
static $table = array("\xD0\x81" => "\xA8", // Ё
"\xD1\x91" => "\xB8", // ё
// украинские символы
"\xD0\x8E" => "\xA1", // Ў (У)
"\xD1\x9E" => "\xA2", // ў (у)
"\xD0\x84" => "\xAA", // Є (Э)
"\xD0\x87" => "\xAF", // Ї (I..)
"\xD0\x86" => "\xB2", // I (I)
"\xD1\x96" => "\xB3", // i (i)
"\xD1\x94" => "\xBA", // є (э)
"\xD1\x97" => "\xBF", // ї (i..)
// чувашские символы
"\xD3\x90" => "\x8C", // Ӑ (А)
"\xD3\x96" => "\x8D", // Ӗ (Е)
"\xD2\xAA" => "\x8E", // Ҫ (С)
"\xD3\xB2" => "\x8F", // Ӳ (У)
"\xD3\x91" => "\x9C", // ӑ (а)
"\xD3\x97" => "\x9D", // ӗ (е)
"\xD2\xAB" => "\x9E", // ҫ (с)
"\xD3\xB3" => "\x9F", // ӳ (у)
);
return preg_replace('#([\xD0-\xD1])([\x80-\xBF])#se',
'isset($table["$0"]) ? $table["$0"] :
chr(ord("$2")+("$1" == "\xD0" ? 0x30 : 0x70))
',
$str
);
}

$conn=pg_connect($conn_string);
$sql="SELECT id,cat_name FROM shop_cats;";
$result=pg_exec($conn,$sql);
$numid=pg_numrows($result);
for ($i=0;$i<$numid;$i++) {
$currcatid=pg_result($result,$i,id);
$currcatname=pg_result($result,$i,cat_name);
$currwinname=UTF8toCP1251($currcatname);
echo $currcatname." - ".$currwinname."<br/> \n";
 

Фанат

oncle terrible
Команда форума
прикольно.
а у тебя там utf-8?
ты уверен, что там прочитал, где надо?
 

twistfire

Новичок
прикольно.
а у тебя там utf-8?
ты уверен, что там прочитал, где надо?
Почему после субмита формы все данные приходят в виде &amp;#1048;?
Такое происходит, если поля формы заполненный символами, отсутствующими в текущей кодировке страницы. Например, CHARSET у страницы указывает Windows-1252, а в форму вы вводите русские буквы. Браузер не может передать введенное правильно, потому что в указанной кодировке отсутствуют русские символы. Подобное кодирование помогает сохранить ваши данные в том виде, в каком вы их ввели. Символы зашифрованы в кодировке UNICODE. Про дешифрацию смотрите в одном из разделов данного FAQ.

ну написано, что вроде приходит в юникод.
Это не так, или я чего-то не понимаю?
Как преобразовать??
 

Фанат

oncle terrible
Команда форума
&amp;#1048; - это не юникод.
как преобразовать - я тебе уже написал
 

twistfire

Новичок
тыкни пожалуйста..
т.к. впритык не вижу..

-~{}~ 06.04.07 17:14:

http://phpclub.ru/faq/wakka.php?wakka=encodings/encodings2&v=8b6
вроде оно..
буду копать
спасибо
 
Сверху