Кириллица в ASCII и алфавитный список

php веб дизайн базы данных ascii

В своё время делал алфавитный список с дальнейшим внесением в базу ASCII-кода букв. Выглядело это так:
<code lang="php">
echo "<select>";
for($i=65;$i<=90;$i++){
echo "<option value='".$i."'>".chr($i)." </option>";
}
echo "</select>";
</code>
Тут всё просто, т.к. использовались латинские буквы. Сейчас мне надо сделать тоже самое, но с кириллицей. Но сложность в том, что символы в выпадающем списке отображаются не правильно (сайт в кодировке UTF-8, в .htaccess строка "AddDefaultCharset UTF-8"). Найденный выход, кроме как индуским, не назовёшь:
<code lang="php">
echo "<select>";
for($i=192;$i<=223;$i++){
echo "<option value='".$i."'>".iconv("CP1251", "UTF-8",chr($i))."</option>";
}
echo "</select>";
</code>
Всегда старался избегать iconv(), но пока на ум только эта функция приходит. Если кто сталкивался с проблемой такой кодировки, то буду рад выслушать ваши варианты.

Примечание:
БД естественно в UTF-8. Мне надо лишь выводить алфавит для пользователя, для того, чтоб он мог сортиронуть продукцию по нему. А с базой, в этом случае, связь только в том, чтоб при выводе алфавита проверить есть ли под данной буквой продукт и сделать букву в соответствии с этим активной или нет.
Принцип можно посмотреть тут - http://smed.ru/catalog-medical/
P.S. Как и в примере выше, будет и кириллический, и латинский алфавиты. Поэтому в базе удобней хранить не букву "А", а её код "192" и не латинскую "A", а "65".

Примечание:
>> К update 1
Способ хороший с точки зрения чистого программирования, но подойдёт уже в случае, когда пользователь определил букву и вытаскиваются все названия продуктов по срезанной первой букве. Однако, приходиться думать и о дизайне. Как минимум, надо латинские и кириллицу разнести по разным строкам (поправка - <select>...</select> я взял только для примера):
A B C ... ... X Y Z
А Б В ... ... Э Ю Я
плюс не исключены и нестандартные символы, которые так же необходимо отделить от общей массы.
Ответы:
Ну так храни базу тоже в UTF-8, или хотя бы кодировку соединения поставь UTF-8. И вот это вот: for($i=192;$i<=223;$i++) - тоже никуда не годится. Как-то надо кодировко-независимо сделать.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.