Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как перекодировать символ в UCS2 из Windows-1251

1.9K
27 января 2005 года
eliteMOBILE
89 / / 27.01.2005
Помогите!
Я хочу сделать чтобы сообщения отправлялись на мобильные телефоны через форму отправки с сайта на мобильные телефоны в русской кодировке.

Как я узнал, для кодирования требуется UCS2 (Unicode). Символы кириллицы находятся в диапазоне 0400 - 04FF.

Я не могу вывести код символа 0411 или любого другого больше 255 с помощью функции chr().
Может быть есть ещё функции кодирования (перекодирования) текста из windows-1251 в Unicode???

Адрес скрипта http://eliteMOBILE.net/sms.php
Помогите, плиз!
4
28 января 2005 года
mike
3.7K / / 01.10.2002
Конечно. Один символ - один байт. Один байт - 0-255.

411 записывается так:

 
Код:
$code=411;
$string="";

$lowbyte=$code&0xFF;
$hibyte=($code>>8)&0xFF;
$string=chr($hibyte).chr($lowbyte);
1.9K
29 января 2005 года
eliteMOBILE
89 / / 27.01.2005
Цитата:
Originally posted by mike
Конечно. Один символ - один байт. Один байт - 0-255.

411 записывается так:

 
Код:
$code=411;
$string="";

$lowbyte=$code&0xFF;
$hibyte=($code>>8)&0xFF;
$string=chr($hibyte).chr($lowbyte);



Да, вроде правильно. Однако объединить два байта почему-то не удаётся. К примеру в виндовс ИЕ выдаёт 2 байта, один из которых неизвестный символ квадратик, а другой -0 символ "я".
Я сейчас на мобилке попробую, написал такой скриптик

[SIZE=1]
<?
setlocale(LC_ALL, "ru_RU.koi8-r");
Header("Content-Type: text/html; charset=koi8-r");
$f = fopen("test.txt", "w+");


$to = "мой @ mail телефона";
$headers="Content-Type: text/plain; charset=\"koi8-r\"\n"; // кодировка
$headers.="Content-Transfer-Encoding: 8bit";


$code = base_convert("04FF", 16, 10);
$string="";
$allstr="";
$p = 0;

for($i=1; $i<=$code; $i++)
{
$lowbyte=$code&0xFF;
$hibyte=($code>>8)&0xFF;
$string=chr($hibyte).chr($lowbyte);
$allstr .= $string;

if(is_integer($i/70))
{
$p++;
$all = $p." ".$allstr;
//$all = convert_cyr_string($all, "windows-1251", "koi8-r");
mail($to, $p, $allstr, $headers);
// fwrite($f, "$allstr"); // данные введены
echo $all."
";
$string = "";
$allstr = "";
}
$lowbyte="";
$hibyte="";
$string="";
}

echo "
Выполнено!";

?>
[/SIZE]

Однако на телефон приходят только символы "еа" с чёрточками сверху.... я зациклил прогу, подставлял в неё все коды от 1 до 1200 однако все символы получились одинаковые!

Кстати, сделаю вам комплемент: у вас очент хороший, удобный и порядочный форум! Хотел бы и я тако форум...

Пожалуйста, помогите!

1.9K
29 января 2005 года
eliteMOBILE
89 / / 27.01.2005
Я допустил в цикле ошибку, уже понял!
Однако символы присылаются не как один, а как два отдельных!
4
29 января 2005 года
mike
3.7K / / 01.10.2002
Для мобилников я делал так:

Код:
$convert=Array(
"А"=>"&#x0410;",
"Б"=>"&#x0411;",
"В"=>"&#x0412;",
"Г"=>"&#x0413;",
"Д"=>"&#x0414;",
"Е"=>"&#x0415;",
"Ж"=>"&#x0416;",
"З"=>"&#x0417;",
"И"=>"&#x0418;",
"Й"=>"&#x0419;",
"К"=>"&#x041A;",
"Л"=>"&#x041B;",
"М"=>"&#x041C;",
"Н"=>"&#x041D;",
"О"=>"&#x041E;",
"П"=>"&#x041F;",
"Р"=>"&#x0420;",
"С"=>"&#x0421;",
"Т"=>"&#x0422;",
"У"=>"&#x0423;",
"Ф"=>"&#x0424;",
"Х"=>"&#x0425;",
"Ц"=>"&#x0426;",
"Ч"=>"&#x0427;",
"Ш"=>"&#x0428;",
"Щ"=>"&#x0429;",
"Ъ"=>"&#x042A;",
"Ы"=>"&#x042B;",
"Ь"=>"&#x042C;",
"Э"=>"&#x042D;",
"Ю"=>"&#x042E;",
"Я"=>"&#x042F;",
           
"а"=>"&#x0430;",
"б"=>"&#x0431;",
"в"=>"&#x0432;",
"г"=>"&#x0433;",
"д"=>"&#x0434;",
"е"=>"&#x0435;",
"ж"=>"&#x0436;",
"з"=>"&#x0437;",
"и"=>"&#x0438;",
"й"=>"&#x0439;",
"к"=>"&#x043A;",
"л"=>"&#x043B;",
"м"=>"&#x043C;",
"н"=>"&#x043D;",
"о"=>"&#x043E;",
"п"=>"&#x043F;",
"р"=>"&#x0440;",
"с"=>"&#x0441;",
"т"=>"&#x0442;",
"у"=>"&#x0443;",
"ф"=>"&#x0444;",
"х"=>"&#x0445;",
"ц"=>"&#x0446;",
"ч"=>"&#x0447;",
"ш"=>"&#x0448;",
"щ"=>"&#x0449;",
"ъ"=>"&#x044A;",
"ы"=>"&#x044B;",
"ь"=>"&#x044C;",
"э"=>"&#x044D;",
"ю"=>"&#x044E;",
"я"=>"&#x044F;",
);

function conv($d) {
    GLOBAL $convert;

    $d=strtr($d,$convert);
    return($d);
    }


Так, кстати, сделано на wap.rbc.ru, wap.mts.ru
1.9K
29 января 2005 года
eliteMOBILE
89 / / 27.01.2005
Да, вы правы. Я сделал такой же самый код для своего wap-сайта, но для отправки русских СМС нужна именно кодировка UCS2, и не иначе!

Просто те символы, который ОС видит как русские, в мобилке это каракули (типа а с чёрточкой и т.д.). Для этого нужно перевести днобайтовый символ русского языка в 2-х байтовый символ UCS2. Я у преподавателей своих спрашивал, они этого не знают. Единственное что я нашел, так это функция перевода в Unicode для С++. Её название wchar_t() - возвращает вроде строку Юникода!

Помогите, прошу!

А так же когда я посылаю письмо функцией mail() то в пришедшем мне смс-сообщении содержися строка-идентификатор моего сервера. Как её убрать или изменить? Строка типа хост@сервер.ком.юа

Спсибо за столь быстрые ответы!

±¶ё - типа того....
291
29 января 2005 года
gufy
703 / / 08.01.2003
Цитата:
Как её убрать или изменить? Строка типа хост@сервер.ком.юа


в описании функции mail() четвертый параметр - additional headers. так вот если его посатвить "FROM: [email]user@server.com.ua[/email]" то вроде бы все будет :)

1.9K
29 января 2005 года
eliteMOBILE
89 / / 27.01.2005
Цитата:
Originally posted by gufy

в описании функции mail() четвертый параметр - additional headers. так вот если его посатвить "FROM: [email]user@server.com.ua[/email]" то вроде бы все будет :)



Как это. Я прикрепляю Headerы такого содержания:
$headers="Content-Type: text/plain; charset=\"koi8-r\"\n"; // кодировка
$headers.="Content-Transfer-Encoding: 8bit";

А функция отправки такая:
mail($to, "", $string, $headers);

А что вы имеете ввиду? Прилепить адрес кому отправляю???

4
29 января 2005 года
mike
3.7K / / 01.10.2002
 
Код:
$headers="Content-Type: text/plain; charset=\"koi8-r\"\n";
$headers.="Content-Transfer-Encoding: 8bit";
$headers.="From: [email]myemail@codenet.ru[/email]";
1.9K
30 января 2005 года
eliteMOBILE
89 / / 27.01.2005
Цитата:
Originally posted by mike
 
Код:
$headers="Content-Type: text/plain; charset=\"koi8-r\"\n";
$headers.="Content-Transfer-Encoding: 8bit";
$headers.="From: [email]myemail@codenet.ru[/email]";



Получается такая картинка.
1. При отсылке на мобильный телефон e-mail сообщения через функцию mail() на телефон приходят различные значки, символы английского алфавита - но не руские символы!

2. Функция mail($to, "", $str, $headers);
где:

 
Код:
$headers="Content-Type: text/plain; charset=\"koi8-r\"\n";      // кодировка
    $headers.="Content-Transfer-Encoding: 8bit";
    $headers.="From: [email]myemail@codenet.ru[/email]";

    $to = "380679826105@2sms.kyivstar.net";

    $str = "..."; // 1.прочитанные из текстового файла символы unicode
    // 2.или символы, которые перекодированные вашей функцией объединяющей
    // два символа в один
    // 3.или подставляемые функцией chr(1041); где 1041 - код 0411 - х16

К общем, в любом случае на телефон приходят символы по отдельности (не 2 байта, а по одному байту на каждый символ). Присылается строка типа: $Mu&'--
Т.е. видать один только символ распознаётся...

Прочтите о UCS2 ("Структура SMS | UCS2 (UNICODE) | Cпецификации GSM фаза 2+") на http://www.xprogramming.ru/wiki/ow.asp?p=%CF%F0%EE%E5%EA%F2SMS_%D1%F2%F0%F3%EA%F2%F3%F0%E0Sms&a=print

Из этой статьи вроде становится ястно что кодируется 1 символ???

В общем, у меня при отправке SMS-сообщения на мобильный при перекодировании сообщения из кодировки windows-1251 в кодировку koi8 у меня получается пнеплохая картинка!
Я получаю по SMS сообщение транслитом, типа "Privet! Kak dela? SMS - super!".
Из этого я сделал вывод, что на сервер нужно посылать какую-то дополнительную информацию, которая говорит что кодировать в транслит не нужно, мол телефон и сам поймет эти русские символы.

Пожалуйста,Ю помогите мне!

Я видел, что некоторые сайты позволяют отправлять SMS без заголовка сервера "X-mailer:" (как это?) и к тому же русские сообщения.

А можно ли с вашим прелестным сайтом обмениватся ссылками? Даже не ссылками, а кнопочками. Мне ваш проект очень-очень нравится, нужно людям о нём рассказать! Если вам будет интересен мой проект http://eliteMOBILE.net чтобы обмениватся кнопочками на всех страницах, то это для меня будет честь! Ну, а если нет, то я понимаю что мой проект ещё не набрал больших оборотов... будем развиватся...

СПАСИБО ВАМ БОЛЬШОЕ за столь быстрые ответы! Вы очень хороший админ! СПАСИБО!!!
1.9K
30 января 2005 года
eliteMOBILE
89 / / 27.01.2005
Для увеличения количества текста на страницах мобильных сайтов используйте такую функцию, без предвваряющего нуля:

Код:
<?

$convert=Array(
"А"=>"&#x410;",
"Б"=>"&#x411;",
"В"=>"&#x412;",
"Г"=>"&#x413;",
"Д"=>"&#x414;",
"Е"=>"&#x415;",
"Ж"=>"&#x416;",
"З"=>"&#x417;",
"И"=>"&#x418;",
"Й"=>"&#x419;",
"К"=>"&#x41A;",
"Л"=>"&#x41B;",
"М"=>"&#x41C;",
"Н"=>"&#x41D;",
"О"=>"&#x41E;",
"П"=>"&#x41F;",
"Р"=>"&#x420;",
"С"=>"&#x421;",
"Т"=>"&#x422;",
"У"=>"&#x423;",
"Ф"=>"&#x424;",
"Х"=>"&#x425;",
"Ц"=>"&#x426;",
"Ч"=>"&#x427;",
"Ш"=>"&#x428;",
"Щ"=>"&#x429;",
"Ъ"=>"&#x42A;",
"Ы"=>"&#x42B;",
"Ь"=>"&#x42C;",
"Э"=>"&#x42D;",
"Ю"=>"&#x42E;",
"Я"=>"&#x42F;",
           
"а"=>"&#x430;",
"б"=>"&#x431;",
"в"=>"&#x432;",
"г"=>"&#x433;",
"д"=>"&#x434;",
"е"=>"&#x435;",
"ж"=>"&#x436;",
"з"=>"&#x437;",
"и"=>"&#x438;",
"й"=>"&#x439;",
"к"=>"&#x43A;",
"л"=>"&#x43B;",
"м"=>"&#x43C;",
"н"=>"&#x43D;",
"о"=>"&#x43E;",
"п"=>"&#x43F;",
"р"=>"&#x440;",
"с"=>"&#x441;",
"т"=>"&#x442;",
"у"=>"&#x443;",
"ф"=>"&#x444;",
"х"=>"&#x445;",
"ц"=>"&#x446;",
"ч"=>"&#x447;",
"ш"=>"&#x448;",
"щ"=>"&#x449;",
"ъ"=>"&#x44A;",
"ы"=>"&#x44B;",
"ь"=>"&#x44C;",
"э"=>"&#x44D;",
"ю"=>"&#x44E;",
"я"=>"&#x44F;",
);

function conv($d) {
    GLOBAL $convert;

    $d=strtr($d,$convert);
    return($d);
    }

echo conv("Привет всем!!! Rezultat");
?>

Может и я стал полезен... :)
1.9K
01 февраля 2005 года
eliteMOBILE
89 / / 27.01.2005
Пожалуйста, помогите хоть советом. Вот недавно кто-то рпислал нечто, письмо, где символы явно русские. Но письмо ко мне пришло на мобилку из-за бугра. Так значит что не оператор здесь виноват...

Может нужно в письме указывать не 8 а 16 бит кодировку????
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог