X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> проблемы с кодировкой subject в mailto
Apay
Apay
Topic Starter сообщение 1.9.2009, 21:03; Ответить: Apay
Сообщение #1


при формировании строки в
<a href="mailto:user@inter.net?subject=Any%20subject">send</a>
автоматом вставляется тема письма "Any subject".
чтобы вставить, например, кириллицу надо написать
<a href="mailto:user@inter.net?subject=%CE%E1%F0%E0%F9%E5%ED%E8%E5%20%F1%20%F1%E0%E9%F2%E0">send</a>
это ansi escape-последовательность фразы "Обращение с сайта".

теперь сама проблема:
как быть если
а) стоит кодировка utf8 и заранее не известна кодовая страница ansi для конвертации ?
б) при кодировке utf8 одновременно нужно использовать например кириллицу и немецкие умляуты (ä, ö, ü) или что-то подобное ?
то есть как передать utf8 ?

если передавать так
<a href="mailto:user@inter.net?subject==?UTF-8?B?0J7QsdGA0LDRidC10L3QuNC1INGBINGB0LDQudGC0LA=?=">send</a>
то в строке тема почтового клиента выводится
=?UTF-8?B?0J7QsdGA0LDRidC10L3QuNC1INGBINGB0LDQudGC0LA=?=
хотя адресат получает нормальное письмо с темой "Обращение с сайта"
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
Topic Starter сообщение 5.9.2009, 23:57; Ответить: Apay
Сообщение #2


небольшое уточнение, проблема возникает только в виндах, под линухом нормально проходят utf8 escape последовательности
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
UncleM
UncleM
сообщение 6.9.2009, 4:37; Ответить: UncleM
Сообщение #3


Советую работать только с UTF-8 и забыть об ANSI и всяких escape'ах.

Страницу, содержащую mailto ссылку слудует сохранить в формате UTF-8 без BOM. В таком случае любые символы автоматом будут в UTF-8 и не нужно ничего конвертировать.

Я проблему повторить у себя не смог, или просто не совсем понял ее описание.


--------------------
Осторожно! Вы можете получить огромный заряд позитива!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
Topic Starter сообщение 6.9.2009, 9:56; Ответить: Apay
Сообщение #4


(Mike @ 6.9.2009, 07:37) *
Страницу, содержащую mailto ссылку слудует сохранить в формате UTF-8 без BOM. В таком случае любые символы автоматом будут в UTF-8 и не нужно ничего конвертировать.
ну я уж не совем начинающий чтобы такое не знать :rolleyes:

Mike, попробуйте кликнуть на ссылку (страница в utf8)
<a href="mailto^user@inter.net?subject=Обращение%20с%20сайта">mail</a>
в поле subjct почтового клиента должна появиться фраза "Обращение с сайта", но появляется utf16 escape последовательность
&u041E&u0431&u0440&u0430&u0449&u0435&u043D&u0438&u0435&20&u0441&20&u0441&u0430&u0439&u0442&u0430

(вместо & читайте %, tscape последовательности вставить не получается, они автоматом декодируются)
или что-то типа
Обращение С Сайта
(это utf8 строка в ansi виде)
такие чудеса случаются только под виндами, а учитывая что винды стоят у очень многих, при создании зайтов эти "особенности" продукта дяди билли надо как-то обходить

надеюсь объяснил полее понятно
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Flare
Flare
сообщение 7.9.2009, 16:20; Ответить: Flare
Сообщение #5


Apay, я в свое время задавалась такими же вопросами как и вы сейчас. У меня сайт в кодировке utf8 никак не хотел передавать почтовому клиенту тему письма в приемлемом для чтения формате.
В итоге написала форму обратной связи на сайте.
Если ваш хостинг позволяет, то лучшего решения не могу предложить да и для себя не нашла.
Вот функция, которая принимает данные в utf8, а отправляет письма в кириллице (у большенства пользователей виндовс почтовики настроены на кириллицу):

[PHP]function send_mail($to, $subject, $message, $from)
{
mb_internal_encoding("UTF-8");
$subject=mb_convert_encoding($subject, "Windows-1251");
$message=mb_convert_encoding($message, "Windows-1251");
mail($to, $subject, $message, $from."X-Mailer: PHPMail\n", "charset=\"Windows-1251\"\n");
return true;
}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
Topic Starter сообщение 7.9.2009, 17:09; Ответить: Apay
Сообщение #6


Flare, для cp1251 все делается просто
[php]$subj = 'Какая-то строка';
...
echo '<a href="mailto:user@inter.net?subject='.
rawurlencode(iconv("UTF-8","WINDOWS-1251",$subj)).
'">ссылка</a>';
[/php]но меня интересует вариант когда надо выводить subjqct в utf8 потомучто он содержит символы не из одной ansi кодировки? например кириллицу и немецкие умляуты: 'абвгäöü'

а то что вы предлагаете - луче все-таки через utf8 делать, т.к. при перекодировании информация может исказиться, а все более-менее современные почтовики с utf8 работают нормально.
[php]function send_mail( $to, $subject, $message, $from ){
static $options = array( 'input-charset'=>'UTF-8',"output-charset" => "UTF-8" );
$to = iconv_mime_encode( '', $to, $options );
$subject = iconv_mime_encode( '', $subject, $options );
$from = iconv_mime_encode( 'From', $from, $options );
return mail( $to, $subject, $message, $from."\nX-Mailer: PHPMail\nMIME-Version: 1.0\n", "Content-type: text/plain; charset=utf-8\n" );
}
[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Flare
Flare
сообщение 7.9.2009, 19:44; Ответить: Flare
Сообщение #7


Я сейчас поняла суть вашего первого вопроса.

Ну а казательно:
при перекодировании информация может исказиться

если использовать mb_ - функции, которые существуют специально для работы с utf8, то никаких искажений не происходит.
Поэтому, используя мою функцию, только не перекодируя subject и message, можно легко отправлять письма в utf8, что я успешно и делаю :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
Topic Starter сообщение 7.9.2009, 20:11; Ответить: Apay
Сообщение #8


(Flare @ 7.9.2009, 22:44) *
если использовать mb_ - функции, которые существуют специально для работы с utf8, то никаких искажений не происходит.
это не зависит от используемых функций а зависит от однобайтовости ansi кодировки и, например при конвертации в cp1251 символы из cp1257 будут искажены.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Flare
Flare
сообщение 7.9.2009, 20:39; Ответить: Flare
Сообщение #9


при конвертации в cp1251 символы из cp1257


У нас ведь разговор про utf8. Я и говорю про специальные функции для работы с этой кодировкой.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
Topic Starter сообщение 7.9.2009, 20:51; Ответить: Apay
Сообщение #10


(Flare @ 7.9.2009, 19:20) *
$message=mb_convert_encoding($message, "Windows-1251");
один вопрос: что вы делаете данной строчкой? и причем после этого utf8 ?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Проблемы с версткой. Сайт поплыл.
1 igor1337 4240 3.9.2016, 19:41
автор: -Ruslaner___-
Открытая тема (нет новых ответов) Проблемы с Kazapa
4 baracuda 3765 29.6.2015, 22:21
автор: baracuda
Открытая тема (нет новых ответов) У меня возникли две проблемы. Пожалуйста помогите.
6 DmitryPro 5111 21.6.2014, 20:47
автор: -Mr.Usluga-
Открытая тема (нет новых ответов) проблемы с сайтом
3 Modest_hb 4869 16.5.2013, 17:44
автор: -killerblade-
Открытая тема (нет новых ответов) проблемы с сайтом
4 Modest_hb 5702 14.5.2013, 17:04
автор: -gen-5-


 



RSS Текстовая версия Сейчас: 18.4.2024, 20:25
Дизайн