Я делаю неоффициальный сайт радио Эра. Тут он http://radioera.zoxt.net/webcam.php (На украинском) Он имеет чат. Пользователь может написать сообщение и послать его, при посылке оно не только сохраняется на сервере в базку и загружается оттудова всем остальным пользователям, а ещё и посылается в группу на гогле. Проблема в том, что при посылке киррилического текста сообщение выглядит у получающего так: C(1) Friday June 2, 21:39:46 & # 1055;& # 1088;& # 1077;& # 1074;& # 1077;& # 1076;, & # 1076;& # 1091;& # 1088;& # 1072;! (Повідомлення надіслано на Еру) (Повідомлення надіслано на Еру) - эта строчка добавлена автоматически на сервере и доставилась как видите читаемо, а сам текст сообщения не читаемо. Он был получен через $_REQUEST от пользователя. Мне уже добрые люди в разделе для новичков пытались объяснить, как это иправить, но я просто не могу это понять. Пожалуйста, напишите мне поподробнее, как мне сделать, чтобы киррилические сообщения нормально посылались! И почему это вообще оно так кодируется. Кто их вообще просил!
Пожалуйста, посоветуйте мне, что почитать (электр.), какие слова вводить в поисковике хоть! Сам не могу найти ничё про это. В мануале кодировка циферкаим не описана.
я ведь давал тебе ссылку на примеры. там и функция есть для этого даже... PHP: <?php function Unicode2Charset($str, $charset = 'Windows-1251') // by SiMM, &#xHHHH; addition by John Profic { return preg_replace( '~&#(?:x([\da-f]+)|(\d+));~ie', 'iconv("UTF-16LE", $charset, pack("v", "$1" ? hexdec("$1") : "$2"))', $str); } $text = 'Превед, дура'; print Unicode2Charset($text); // output: "Превед, дура" ?>
simpson Просто это функция сильно заумная. Как я могу её использовать, не понимая, что она делает. Ну ладно. Попробую. Спасибо.
Ничё не помогло. Вот код PHP: <?php function Unicode2Charset($str, $charset = 'Windows-1251') // by SiMM, &#xHHHH; addition by John Profic { return preg_replace( '~&#(?:x([\da-f]+)|(\d+));~ie', 'iconv("UTF-16LE", $charset, pack("v", "$1" ? hexdec("$1") : "$2"))', $str); } define("MAIL_ENCODING", "Windows-1251"); function make_mail_message($user_name, $userID, $date, $message, $send_to_era) { if($send_to_era) $message.="\n(Повідомлення надіслано на Еру.)"; else $message.="\n(Повідомлення не надіслано на Еру.)"; $res=$user_name . "(" . $userID . ") " . $date . "\n" . $message; $res=Unicode2Charset($res, MAIL_ENCODING); $res=wordwrap($res, 68); return $res; } $message_raw=$_POST['message']; $mail_message=make_mail_message($user->name, $user->ID, $now_str, $message_raw, $send_to_era); $to=""; if($send_to_era) { $to .= RADIO_ERA_MAIL . ", "; $res_str.="Повідомлення було надіслано на Еру.<br>"; } else { $res_str.="Повідомлення не було надіслано на Еру.<br>"; } $to .= GROUP_MAIL; $send_res=mail($to, "Повідомлення від слухача", $mail_message, get_mail_header()); ?>