Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » WAP+PHP и русские буквы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6

Открыть новую тему     Написать ответ в эту тему

Mixailo



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если просто писать русскими буквами - на телефоне видны коряки... пробовал utf8_encode - коряки стали еще хуже
Что нужно делать?

Всего записей: 283 | Зарегистр. 26-01-2002 | Отправлено: 16:51 30-08-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mixailo
А телефон поддерживает русский? Не пробовал все писать заглавными буквами?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:57 30-08-2003
Mixailo



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Телефон поддерживает русский... Большие буквы тоже не помогают.
Фишка в том, что стандартная функция utf8_encode выдает такие коряки:
Ïðåäëà ãà þ Âà øåì
А на вап-сайте МТС коряки совсем другие:
Общение
Вопрос - где в пхп функция, которая выдает нужные коряки?

Всего записей: 283 | Зарегистр. 26-01-2002 | Отправлено: 00:51 31-08-2003
pom

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я просто завел в скрипте массив для замены и конвертирую "в лоб".
 
struct er waper[76] =
{
"а","а",
"б","б",
"в","в",
"г","г",
"д","д",
"е","е",
...

Всего записей: 13 | Зарегистр. 14-08-2003 | Отправлено: 02:01 31-08-2003
Mixailo



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
О!
Это я уже где-то слышал  
А где таблицу взять? Если не сложно - может мне в приват скинешь?
 
Добавлено
Вот такая функция есть в хелпе к ПХП:

Код:
 
function utf8ToUnicodeEntities ($source) {
    // array used to figure what number to decrement from character order value  
    // according to number of characters used to map unicode to ascii by utf-8
    $decrement[4] = 240;
    $decrement[3] = 224;
    $decrement[2] = 192;
    $decrement[1] = 0;
     
    // the number of bits to shift each charNum by
    $shift[1][0] = 0;
    $shift[2][0] = 6;
    $shift[2][1] = 0;
    $shift[3][0] = 12;
    $shift[3][1] = 6;
    $shift[3][2] = 0;
    $shift[4][0] = 18;
    $shift[4][1] = 12;
    $shift[4][2] = 6;
    $shift[4][3] = 0;
     
    $pos = 0;
    $len = strlen ($source);
    $encodedString = '';
    while ($pos < $len) {
        $asciiPos = ord (substr ($source, $pos, 1));
        if (($asciiPos >= 240) && ($asciiPos <= 255)) {
            // 4 chars representing one unicode character
            $thisLetter = substr ($source, $pos, 4);
            $pos += 4;
        }
        else if (($asciiPos >= 224) && ($asciiPos <= 239)) {
            // 3 chars representing one unicode character
            $thisLetter = substr ($source, $pos, 3);
            $pos += 3;
        }
        else if (($asciiPos >= 192) && ($asciiPos <= 223)) {
            // 2 chars representing one unicode character
            $thisLetter = substr ($source, $pos, 2);
            $pos += 2;
        }
        else {
            // 1 char (lower ascii)
            $thisLetter = substr ($source, $pos, 1);
            $pos += 1;
        }
 
        // process the string representing the letter to a unicode entity
        $thisLen = strlen ($thisLetter);
        $thisPos = 0;
        $decimalCode = 0;
        while ($thisPos < $thisLen) {
            $thisCharOrd = ord (substr ($thisLetter, $thisPos, 1));
            if ($thisPos == 0) {
                $charNum = intval ($thisCharOrd - $decrement[$thisLen]);
                $decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
            }
            else {
                $charNum = intval ($thisCharOrd - 128);
                $decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
            }
 
            $thisPos++;
        }
 
        if ($thisLen == 1)
            $encodedLetter = "&#". str_pad($decimalCode, 3, "0", STR_PAD_LEFT) . ';';
        else
            $encodedLetter = "&#". str_pad($decimalCode, 5, "0", STR_PAD_LEFT) . ';';
 
        $encodedString .= $encodedLetter;
    }
 
    return $encodedString;
}
 

 
Она дает коряки типа  
&#00197;&#00249;&#00184;&#032;&#00238;&#00228;&#00232;
&#00237;&#032;&#00226;&#00231;&#00227;&#00235;&#00255;
&#00228;&#032;&#00237;&#00224;&#032;&#00239;&#00240;
&#00238;&#00225;&#00235;&#00229;&#00236;...
Но телефон их по прежнему не читает, в отличие от МТСных:
&#x0421;&#x043F;&#x0440;&#x0430;&#x0432;&#x043A;&#x0430;

Всего записей: 283 | Зарегистр. 26-01-2002 | Отправлено: 13:49 31-08-2003 | Исправлено: Mixailo, 16:05 31-08-2003
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Господа о чем спор - как и все остальные браузеры - WAP браузер тоже возвращает свой HTTP_USER_AGENT - исходя из этой информации и при наличии базы этих юзер агентов в которой содержится информация о том какую кодировку понимает наш юзер агент - написать модуль для перекодировки из CP1251 в любую другую - дело 15 минут!
 
Удачи господа!

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 23:44 31-08-2003
Alex2002

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
# =============================================================================
#                       unicode (urlencoded) -> Win (urlencoded)
# =============================================================================
sub uu2wu{
$_[0] =~ s/%d0%90/%C0/ig;
$_[0] =~ s/%d0%91/%C1/ig;
$_[0] =~ s/%d0%92/%C2/ig;
$_[0] =~ s/%d0%93/%C3/ig;
$_[0] =~ s/%d0%94/%C4/ig;
$_[0] =~ s/%d0%95/%C5/ig;  
$_[0] =~ s/%d0%96/%C6/ig;
$_[0] =~ s/%d0%97/%C7/ig;
$_[0] =~ s/%d0%98/%C8/ig;
$_[0] =~ s/%d0%99/%C9/ig;
$_[0] =~ s/%d0%9a/%CA/ig;
$_[0] =~ s/%d0%9b/%CB/ig;
$_[0] =~ s/%d0%9c/%CC/ig;
$_[0] =~ s/%d0%9d/%CD/ig;
$_[0] =~ s/%d0%9e/%CE/ig;
$_[0] =~ s/%d0%9f/%CF/ig;
$_[0] =~ s/%d0%a0/%D0/ig;
$_[0] =~ s/%d0%a1/%D1/ig;
$_[0] =~ s/%d0%a2/%D2/ig;
$_[0] =~ s/%d0%a3/%D3/ig;
$_[0] =~ s/%d0%a4/%D4/ig;
$_[0] =~ s/%d0%a5/%D5/ig;
$_[0] =~ s/%d0%a6/%D6/ig;
$_[0] =~ s/%d0%a7/%D7/ig;
$_[0] =~ s/%d0%a8/%D8/ig;
$_[0] =~ s/%d0%a9/%D9/ig;
$_[0] =~ s/%d0%aa/%DA/ig;
$_[0] =~ s/%d0%ab/%DB/ig;
$_[0] =~ s/%d0%ac/%DC/ig;
$_[0] =~ s/%d0%ad/%DD/ig;
$_[0] =~ s/%d0%ae/%DE/ig;
$_[0] =~ s/%d0%af/%DF/ig;
$_[0] =~ s/%d0%b0/%E0/ig;
$_[0] =~ s/%d0%b1/%E1/ig;
$_[0] =~ s/%d0%b2/%E2/ig;
$_[0] =~ s/%d0%b3/%E3/ig;
$_[0] =~ s/%d0%b4/%E4/ig;
$_[0] =~ s/%d0%b5/%E5/ig;
$_[0] =~ s/%d0%b6/%E6/ig;
$_[0] =~ s/%d0%b7/%E7/ig;
$_[0] =~ s/%d0%b8/%E8/ig;
$_[0] =~ s/%d0%b9/%E9/ig;
$_[0] =~ s/%d0%ba/%EA/ig;
$_[0] =~ s/%d0%bb/%EB/ig;
$_[0] =~ s/%d0%bc/%EC/ig;
$_[0] =~ s/%d0%bd/%ED/ig;
$_[0] =~ s/%d0%be/%EE/ig;
$_[0] =~ s/%d0%bf/%EF/ig;
$_[0] =~ s/%d1%80/%F0/ig;
$_[0] =~ s/%d1%81/%F1/ig;
$_[0] =~ s/%d1%82/%F2/ig;
$_[0] =~ s/%d1%83/%F3/ig;
$_[0] =~ s/%d1%84/%F4/ig;
$_[0] =~ s/%d1%85/%F5/ig;
$_[0] =~ s/%d1%86/%F6/ig;
$_[0] =~ s/%d1%87/%F7/ig;
$_[0] =~ s/%d1%88/%F8/ig;
$_[0] =~ s/%d1%89/%F9/ig;
$_[0] =~ s/%d1%8a/%FA/ig;
$_[0] =~ s/%d1%8b/%FB/ig;
$_[0] =~ s/%d1%8c/%FC/ig;
$_[0] =~ s/%d1%8d/%FD/ig;
$_[0] =~ s/%d1%8e/%FE/ig;
$_[0] =~ s/%d1%8f/%FF/ig;
 
$_[0] =~ s/ /%20/g;
$_[0] =~ s/\+/%20/g;
 
return $_[0];
}
 
# =============================================================================
#                       unicode (urlencoded) -> unicode
# =============================================================================
 
sub uu2u{
$_[0] =~ tr/+/ /;
 
$_[0] =~ s/%d0%90/A/ig;
$_[0] =~ s/%d0%91/&#x0411;/ig;
$_[0] =~ s/%d0%92/B/ig;
$_[0] =~ s/%d0%93/&#x0413;/ig;
$_[0] =~ s/%d0%94/&#x0414;/ig;
$_[0] =~ s/%d0%95/E/ig;
$_[0] =~ s/%d0%96/&#x0416;/ig;
$_[0] =~ s/%d0%97/3/ig;
$_[0] =~ s/%d0%98/&#x0418;/ig;
$_[0] =~ s/%d0%99/&#x0419;/ig;
$_[0] =~ s/%d0%9a/K/ig;
$_[0] =~ s/%d0%9b/&#x041B;/ig;
$_[0] =~ s/%d0%9c/M/ig;
$_[0] =~ s/%d0%9d/H/ig;
$_[0] =~ s/%d0%9e/O/ig;
$_[0] =~ s/%d0%9f/&#x041F;/ig;
$_[0] =~ s/%d0%a0/P/ig;
$_[0] =~ s/%d0%a1/C/ig;
$_[0] =~ s/%d0%a2/T/ig;
$_[0] =~ s/%d0%a3/Y/ig;
$_[0] =~ s/%d0%a4/&#x0424;/ig;
$_[0] =~ s/%d0%a5/X/ig;
$_[0] =~ s/%d0%a6/&#x0426;/ig;
$_[0] =~ s/%d0%a7/&#x0427;/ig;
$_[0] =~ s/%d0%a8/&#x0428;/ig;
$_[0] =~ s/%d0%a9/&#x0429;/ig;
$_[0] =~ s/%d0%aa/&#x042A;/ig;
$_[0] =~ s/%d0%ab/&#x042B;/ig;
$_[0] =~ s/%d0%ac/&#x042C;/ig;
$_[0] =~ s/%d0%ad/&#x042D;/ig;
$_[0] =~ s/%d0%ae/&#x042E;/ig;
$_[0] =~ s/%d0%af/&#x042F;/ig;
$_[0] =~ s/%d0%b0/a/ig;
$_[0] =~ s/%d0%b1/&#x0431;/ig;
$_[0] =~ s/%d0%b2/&#x0432;/ig;
$_[0] =~ s/%d0%b3/&#x0433;/ig;
$_[0] =~ s/%d0%b4/&#x0434;/ig;
$_[0] =~ s/%d0%b5/e/ig;
$_[0] =~ s/%d0%b6/&#x0436;/ig;
$_[0] =~ s/%d0%b7/&#x0437;/ig;
$_[0] =~ s/%d0%b8/&#x0438;/ig;
$_[0] =~ s/%d0%b9/&#x0439;/ig;
$_[0] =~ s/%d0%ba/k/ig;
$_[0] =~ s/%d0%bb/&#x043B;/ig;
$_[0] =~ s/%d0%bc/&#x043C;/ig;
$_[0] =~ s/%d0%bd/&#x043D;/ig;
$_[0] =~ s/%d0%be/o/ig;
$_[0] =~ s/%d0%bf/&#x043F;/ig;
$_[0] =~ s/%d1%80/p/ig;
$_[0] =~ s/%d1%81/c/ig;
$_[0] =~ s/%d1%82/&#x0442;/ig;
$_[0] =~ s/%d1%83/y/ig;
$_[0] =~ s/%d1%84/&#x0444;/ig;
$_[0] =~ s/%d1%85/x/ig;
$_[0] =~ s/%d1%86/&#x0446;/ig;
$_[0] =~ s/%d1%87/&#x0447;/ig;
$_[0] =~ s/%d1%88/&#x0448;/ig;
$_[0] =~ s/%d1%89/&#x0449;/ig;
$_[0] =~ s/%d1%8a/&#x044A;/ig;
$_[0] =~ s/%d1%8b/&#x044B;/ig;
$_[0] =~ s/%d1%8c/&#x044C;/ig;
$_[0] =~ s/%d1%8d/&#x044D;/ig;
$_[0] =~ s/%d1%8e/&#x044E;/ig;
$_[0] =~ s/%d1%8f/&#x044F;/ig;
 
$_[0] =~ s/%(..)/pack("C", hex($1))/eg;

Всего записей: 309 | Зарегистр. 21-12-2002 | Отправлено: 06:36 01-09-2003
Mixailo



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex2002
О!
Спасибо
Сейчас это еще на пхп переписать и вперед, к вапу

Всего записей: 283 | Зарегистр. 26-01-2002 | Отправлено: 19:34 02-09-2003
dron



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Секундочку, это нужно вставлять прямо в WML-скрипт? Если да, то куда именно, если нет, то как прописать обращение к файлу с вышеупомянутым скриптом?
Спасибо!

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

Всего записей: 413 | Зарегистр. 20-07-2001 | Отправлено: 10:09 29-10-2003
dron



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нашел хорошую прогу перекодировщик WML Unicode Konvertor. Сделали ее наши. Распространяется бесплатно! Простая, маленькая. Вверху пишите по-русски, внизу копируете в буфер получившейся код и вставляете в скрипт. Все! Всем советую!

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

Всего записей: 413 | Зарегистр. 20-07-2001 | Отправлено: 09:16 06-11-2003
Intel83



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди подскажите с чего лучше начать делать сайт на WAP на PHP
какую лучше инфу взять? поделитесь кто нить

Всего записей: 114 | Зарегистр. 19-10-2003 | Отправлено: 10:46 06-11-2003
dron



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
По поводу PHP не знаю...
Вообще программировать можно прям в блокноте. Но проще в редакторах... мне понравились SantanaBuilder и WAPtor (где скачал не помню...). Рисунки рисуй в PaintBrush а потом SantanaBuilder сама переконвертирует его в wbmp. Для перекодировки в русские буквы исп. прогу WML Unicode Konvertor. Для просмотра WAP-сайтов исп. WinWAP. Счетчик для сайта возьми на www.wapbanners.net. Чем могу...
 
Но у меня у самого есть ряд вопросов:
1. Если писать русскими буквами в Unicode, то сайт весит очень много! Можно ли как-нибудь писать по-русски по другому??? Можно конечно писать английскими буквами по-русски, или писать английскими буквы, а вставлять Unicode только некоторые русские (й, ц, ш, щ ну и т.д.), но это гемморойно... Что еще можно придумать???
2. Какой браузер наиболее точно отображает WAP-сайты??? у меня нет возможности проверить сайт на всех мобилах с WAP...
 
Добавлено
Тут еще вопросик назрел: а скокадолжна весить каждая страничка WAP-сайта??? Я где-то читал что 1,4К, еще где-то 2. Так сколько?

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

Всего записей: 413 | Зарегистр. 20-07-2001 | Отправлено: 13:42 06-11-2003
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dron

Цитата:
Тут еще вопросик назрел: а скокадолжна весить каждая страничка WAP-сайта??? Я где-то читал что 1,4К, еще где-то 2. Так сколько?

Я уже неоднократно заострял внимание на юзер-агентах!
Скоко можно толочь воду в ступе ?
 
Еще раз повторяю!
 
У КАЖДОГО ЮЗЕР-АГЕНТА СВОИ ПАРАМЕТРЫ!!!
 
ДАМП МУСКУЛЕВОЙ БАЗЫ ЮЗЕР-АГЕНТОВ МОГУ ВЫСЛАТЬ НА МЫЛО !!! -- не актуально

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 19:47 07-11-2003 | Исправлено: Mamay, 15:54 22-04-2008
dron



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mamay
 
будьте так любезны!!!

Всего записей: 413 | Зарегистр. 20-07-2001 | Отправлено: 17:04 09-11-2003
Gram



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как я понял чтобы на мобилке отображались русские буквы, нужно писать их в unicode? Так?
 
Тогда может быть в php есть встроенная функция для перекодирования?
 
Добавлено
И еще: как бы мне в perl реализовать процесс перекодирования из win-1251 в unicode? Или там тоже стандартная функция есть?

----------
Intellect Board | Miranda Gram Pack

Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 18:25 16-03-2004
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
не в unicode а в UTF-8
 
Добавлено
у меня все WAP сайты в UTF-8
как только начал писать в UTF-8 - сразу забыл про проблемы - правда не все старые девайсы это дело понимают...


----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 21:01 17-03-2004
Gram



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
не в unicode а в UTF-8

Ок... но проблема остается: как добиться того, чтобы скрипт сам конвертил текст из win-1251 в utf-8 (скрипт на php и скрипт на perl)?

----------
Intellect Board | Miranda Gram Pack

Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 00:03 18-03-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mamay

Цитата:
Господа о чем спор - как и все остальные браузеры - WAP браузер тоже возвращает свой HTTP_USER_AGENT - исходя из этой информации и при наличии базы этих юзер агентов в которой содержится информация о том какую кодировку понимает наш юзер агент - написать модуль для перекодировки из CP1251 в любую другую - дело 15 минут!  

а к чему такие сложности?
не проще ли что-то наподобие такой проверки делать?

Код:
 
if($ENV{HTTP_ACCEPT}=~m!text/(vnd\.wap\.)?wml!i && -1==index 'Opera', $ENV{HTTP_USER_AGENT}){
# print wml
}
else{
# print html
}
 


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:32 19-03-2004 | Исправлено: Svarga, 12:59 19-03-2004
Gram



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga

Цитата:
if($ENV{HTTP_ACCEPT}=~m!text/(vnd\.wap.)?wml!i && -1==index 'Opera', $ENV{HTTP_USER_AGENT}){

Расшифруй плиз...
 
сорри, за оффтоп

----------
Intellect Board | Miranda Gram Pack

Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 11:58 19-03-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gram
если в HTTP_ACCEPT, переданной клиентом, присутствует text/wml или text/vnd.wap.wml и этот клиент не обзывает себя Оперой (Опера поддерживает wml, хоть и не передаёт в HTTP_ACCEPT инфу об этом, но мало ли... может потом будет), то выдаём wml, иначе — html

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 13:06 19-03-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6

Компьютерный форум Ru.Board » Интернет » Web-программирование » WAP+PHP и русские буквы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru