UTF-8 и заглавная "И"

A
На сайте с 10.05.2008
Offline
48
1717

При парсинге контента в кодировке 1251 используется переконвертация в UTF-8.


$TITLE = mb_convert_encoding($TITLE,"cp1251",$this->convert);

Проблема в том, что заглавная "И" пишется при этом как ??. Есть ли выход из ситуации?

Спасибо.

скрипт автопортала (http://autocrimea.info/) - для приобретения стучите в личку
alexxx_b
На сайте с 10.02.2009
Offline
101
#1

Так попробуйте:

$TITLE = iconv("UTF-8", "CP1251", $TITLE);

__________________

С миру по...

mff
На сайте с 21.02.2008
Offline
282
mff
#2

also, была такая вата у меня при переносе булки на другой хост, облазил весь инет, как устранить - нашел :)

Как у вас там дела с буквой "ш" ? :)

Управление репутацией в сети: https://timbook2.ru/
A
На сайте с 10.05.2008
Offline
48
#3
alexxx_b:
Так попробуйте:
$TITLE = iconv("UTF-8", "CP1251", $TITLE);

__________________
С миру по...

if ($this->convert!='')
{
// $DESCRIPTION = mb_convert_encoding($DESCRIPTION,"cp1251",$this->convert);
$DESCRIPTION = iconv("UTF-8", "CP1251", $TITLE);
// $TITLE = mb_convert_encoding($TITLE,"cp1251",$this->convert);
$TITLE = iconv("UTF-8", "CP1251", $TITLE);

}

вот так будет работать? на рабочем скрипте неохото эксперементировать просто.

alexxx_b
На сайте с 10.02.2009
Offline
101
#4

Я немогу быть уверен на все 100. Но у меня так работает без каких либо запинок.

A
На сайте с 10.05.2008
Offline
48
#5

После замены все стало вопросительными знаками :(

mff
На сайте с 21.02.2008
Offline
282
mff
#6

also, навряд ли вам функция iconv() тут поможет :D

P.S. Пишите в ЛС если не получиться исправить, сейчас я убегаю...

A
На сайте с 10.05.2008
Offline
48
#7

В общем, предложили вариант:

/*
* Исправление кодировки букв "ш" и "И" в MYSQL
* автор: Nc_Soft
* 18.07.09
*/

/*
Частенько встречается при переносе бд, либо при шаманстве с кодировками
буквы "ш" и "И" оказываются битыми (речь идет о utf-8 конечно)
буква "ш" = chr(209).chr(63) / правильно chr(209).chr(136)
буква "И" = chr(208).chr(63) / правильно chr(208).chr(152)
Чтобы пофиксить делаем 2 запроса
*/

UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);

UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);

но тоже не прокатило. Возможно потому, что в базе прописало другие символы (в переменной они выглядят, как �?, а в базе просто два вопросительных знака). Пришла тут в голову идея заменить эти самые �? на "И" через preg_replace в самой переменной. Кто умеет составлять регулярки, откликнитесь, плз!

also добавил 02.04.2010 в 00:17

Все, вопрос решен, тему можно закрыть.

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