Отправляет email-рассылки с помощью сервиса Sendsay

[TC] php. Неправильное отображение русских символов

Здравствуйте, уважаемые!

Сценарий вывода меню использует функцию htmlentities, которой в качестве параметра
передается название или url пункта меню. Когда название состоит из латинских
символов - все замечательно. Но когда название пункта меню написано русскими
буквами то при отображении в браузере подпись графики тегом alt идет в виде абракадабры.
Правда, само название пункта меню выводится в нормальной кодировке. Что может
влиять на такой результат?
Пример:

<td><a href='LinkName.php'>
<img src='logo.gif'
alt='".htmlentities($name)."' /></a>
<a href='".htmlentities($url)."'>$name</a></td>

Играем, тестируем шахматный интернет-клуб для незрячих
http://www.blindcompass.ru/chess.php
Грызунов Александр. Самара.

Ответить   "eastreb" Mon, 10 May 2010 17:31:13 +0500 (#1071611)

 

Ответы:

Vande omentaina, eastreb!

Гм... а зачем вам здесь htmlentities? Если нужен русский альт,
заурленкодьте его или вообще поместите сообщения в отдельный файл.
Кстати, а у вас сайт в кодировке utf-8,

Ответить   Mon, 10 May 2010 17:05:29 +0300 (#1071632)

 

Андрей, здравствуйте!
Вы пишете:

Гм... а зачем вам здесь htmlentities?

Все названия пунктов меню, их url, внешний вид и размер кнопок для них
прописанны в классе в виде массива. Функция этого же класса В цикле
извлекает все необходимые параметры для пунктов меню и с помощью другой
функции выводит меню в браузер. Как раз кусок выводящей кода функции я и
цитировал. Вобщем, класс устроен сложно, но использовать его чрезвычайно
просто. Две три строки с применением оператора require и новая страница
сгенерирована.
Поэтому Смысла заводить еще один дополнительный файл только для текстового
описания кнопок, помимо библиотеки классов особой необходимости не вижу. Тем
более, что не работает лишь подписи для кнопок, Названия же пунктов меню
выводятся правильно и главное, автоматически.

Кстати, а у вас сайт в кодировке utf-8,

Пробовал я сохранять сценарий в кодировке utf8 и получил в результате
абракадабру везде и в меню и в тексте. Поэтому вернулся к 1251ansi., которая
стоит по умолчанию.

p.s. Думаю, что причиной неправильного отображения все-таки является
кодировка, но как с ней подружиться не знаю. Между прочим, функция
htmlentities по умолчанию выводит в кодировке iso8859-1, которая, по моему и
носит псевдоним utf8.

Играем, тестируем шахматный интернет-клуб для незрячих
http://www.blindcompass.ru/chess.php
Грызунов Александр. Самара.

Ответить   "eastreb" Mon, 10 May 2010 18:50:20 +0500 (#1071666)

 

Vande omentaina, eastreb!

и

Отнюдь! ISO - неюникодовая кодировка (попробуйте написать в ней
"привет" русскими буквами, получите латиницу с диакритикой), а utf-8
как раз юникод).
Попробуйте погуглить насчёт того, где меняется кодировка вывода
htmlentities().

Ответить   Mon, 10 May 2010 18:54:48 +0300 (#1071710)