Strict Standards: Resource ID#28 used as offset, casting to integer (28) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#30 used as offset, casting to integer (30) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#31 used as offset, casting to integer (31) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Кодировка в форме (textarea, text и т.д.)
ТвойWeb » WebMaster класс » HTML » Кодировка в форме (textarea, text и т.д.)

Страниц (1): [1]
 

1. UFO - 26 Августа, 2009 - 13:53:11 - перейти к сообщению
Нашел я тут плагин к WordPress, который добавляет форму "Обратной связи". Плагин западный, поэтому саму форму перевел на русский, больше ничего не переводил - ни админку, ни редкие сообщения об ошибках. Сам сайт тоже русскоязычный, само собой в UTF-8, как это принято у всех WordPress сборок. Но вот проблема возникает такая - если вдруг пользователь напортачил в форме обратной связи, то ему выпадет ошибка на русском или английском - не важно, я часть ошибок перевел, а все введенные русскоязычные данные в форме преобразуется в нечитаемый вид типа такого:
CODE:
а�а�а�а

Даже если ничего не трогать, исправить ошибку и отправить так, то мне на почту именно в таком виде и приходит. Это не читабельно. Как можно сделать так, чтобы не менялась кодировка у букв, которые уже введены в textarea, text и т.п. Кодировка в браузере не меняется при этом всем, причем сам сайт корректно работает и в кириллице (авто), и в Unicode UTF-8, а на сайте четко прописана UTF-8.
Кстати, переводил я файл тоже с учетом UTF-8, т.е. в редакторе, который поддерживает эту кодировку. Плагин во вложении, проблемный файл wp-contactform.php
Проблемный кусок кода:
CODE:
if(strlen($wpcf_legend)>0) {
$form .= '<legend>'.$wpcf_legend.'</legend>';
}
$form .= '<form action="'.get_permalink().'" name="wpcf_form" method="post">';
$form .= '<input type="hidden" value="process" name="wpcf_stage"/>';
$form .= $wpcf_strings['error'];
$form .= '<p><label for="wpcf_your_name">'. __('Ваше имя:','wpcf').'</label>';
$form .= $wpcf_strings['name'].'</p>';
$form .= '<p><label for="wpcf_email">'. __('Ваш Email:','wpcf').'</label>';
$form .= $wpcf_strings['email'].'</p>';
$form .= '<p><label>'.__('Вопрос:','wpcf').'</label><span class="challenge">'. __($question, 'wpcf').'</span></p>';
$form .= '<p><label for="wpcf_response">'. __('Ответ:','wpcf').'</label>';
$form .= $wpcf_strings['response'].'</p>';
$form .= '<p><label for="wpcf_website">'. __('Ваш сайт:','wpcf').'</label>';
$form .= '<input class="field" type="text" name="wpcf_website" id="wpcf_website" maxlength="100" tabindex="14" value="'.htmlentities($_POST['wpcf_website']).'" /></p>';
$form .= '<p><label for="wpcf_usersubject">'. __('Тема сообщения:','wpcf').'</label>';
if(strpos(get_option('wpcf_subject'),"|")>0) {
$subjectarray = array();
$subjectarray = explode("|",get_option('wpcf_subject'));
$form .= '<select class="field" name="wpcf_usersubject" id="wpcf_usersubject" tabindex="15">';
for ($i=0; $i<count($subjectarray);$i++ ) {
$arrayoption = '';
$arrayoption = trim($subjectarray[$i]);
if ($arrayoption!='') {
$form .= '<option value="'.trim($subjectarray[$i]).'">'.trim($subjectarray[$i]).'</option>';
}
}
$form .= '</select>';
} else {
if (get_option('wpcf_showsubject')=="TRUE") {
$form.= $wpcf_strings['usersubject'];
}
}
$form .= '</p>';
$form .= '<p><label for="wpcf_msg">'. __('Ваше сообщение :','wpcf').'</label>';
$form .= $wpcf_strings['msg'].'</p>';
if (get_option('wpcf_copy')=='TRUE') {
$form .= '<p><label for="wpcf_copy">'. __('Отправить копию мне','wpcf').'</label>';
$form .= '<input id="copy" type="checkbox" tabindex="17" value="true" name="copy" title="'. __('Отправить копию мне','wpcf').'"/></p>';
}
$form .= '<p class="button"><input id="contactsubmit" type="submit" value="'. __('Отправить','wpcf').'" tabindex="18" name="Submit"/></p>';
$form .= '</form></fieldset></div>';
2. shurph - 01 Сентября, 2009 - 19:38:10 - перейти к сообщению
Трудно судить по такому отрывку. Возможно, проблема вот в этой строке:
CODE:
if(strlen($wpcf_legend)>0)

и вот в этой:
CODE:

if(strpos(get_option('wpcf_subject'),"|")>0) {


Функции strpos, strlen и иже с ними некорректно работают с мультибайтными кодировками, к которым и относится UTF8.

Попробуйте использовать функции mb_strpos, mb_strlen и т.д.
3. Davinchi - 07 Сентября, 2009 - 03:30:06 - перейти к сообщению
shurph пишет:
Трудно судить по такому отрывку. Возможно, проблема вот в этой строке:
CODE:
if(strlen($wpcf_legend)>0)

и вот в этой:
CODE:

if(strpos(get_option('wpcf_subject'),"|")>0) {


Функции strpos, strlen и иже с ними некорректно работают с мультибайтными кодировками, к которым и относится UTF8.

Попробуйте использовать функции mb_strpos, mb_strlen и т.д.


что бы это проверить перекодировать надо все в win 1251
4. shurph - 09 Сентября, 2009 - 17:10:44 - перейти к сообщению
---

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0288]     [ Gzipped ]