Символы от UTF-8 на Windows-1251

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Друзья.
На сайте всё больше и больше пользователи стали использовать символы. Например разлиные сердечки и т.п.
Но они отображаются как Вопросительные знаки. Я полагаю, что проблема в том, что на сайте стоит Windows-1251.
Можно ли их как-то отобразить на win-1251?
 
Ну в принципе все можно.... попробуй использовать функцию iconv()
PHP:
iconv("UTF-8"," win-1251", $name);
 
Ну в принципе все можно.... попробуй использовать функцию iconv()
PHP:
iconv("UTF-8"," win-1251", $name);
Делов том, что в БД они уже в форме Вопросительных знаков попадают.. Т.е. нужно их преобразовывать перед вставкой в бд.. Только вот как их конвертировать..?
 
Делов том, что в БД они уже в форме Вопросительных знаков попадают.. Т.е. нужно их преобразовывать перед вставкой в бд.. Только вот как их конвертировать..?
ну естественно надо конвертировать до инсерта в базу. Я так понимаю они из какой-то формы приходят? вот и делайте обработку после получения результатов этой формы и перед вставкой в базу.
 
Только вот как их конвертировать..?
ну вот так и конвертировать ;) перед вставкой в базу:
iconv("UTF-8", "win-1251", $name); # из UTF-8 в win-1251
iconv("win-1251", "UTF-8", $name); # из win-1251 в UTF-8
так же, после установки соединения с базой, сказать ей:

set character set "кодировка"
 
в базе данных какая кодировка используется? посмотрите с помощью phpMyAdmin
 
как вариант использовать htmlentities для перевода в хтмл коды всего что нет в кириллице
PHP:
$name = htmlentities($name, ENT_QUOTES, "cp1251");
сердечко будет ♥
или переходить на utf-8 (конвертировать тексты в скрипте, текстовые функции, база данных в utf-8) и такой проблемы не будет.
 
PHP:
function recode2($from, $to, $text) {
	if (function_exists('iconv')) { return iconv($from, $to, $text); }
	elseif (function_exists('recode_string')) { return recode_string("$from..$to", $text); }
	else { return $text; }
}
PHP:
$test = recode2("UTF-8", "windows-1251", "$test");
 
Назад
Сверху