Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: JSON и символы "\r\n"(перевода каретки)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
mshdn
Отправлено: 26 Сентября, 2011 - 11:46:19
Post Id


Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Столкнулся с такой проблемой
- если для передачи данных на сервер используется AJAX(JSON)
и передается многострочное поле <textarea>
<script Language="JavaScript">
function savecomm(id){
sn='name'+id;
name=document.getElementById(sn).value;
sd='description'+id;
description=document.getElementById(sd).value;

jQuery.post('savecomment.php',{id:id,name:name,description:description},function(data)
{
if (data){
.....
}
},'JSON');

}
</script>

то в скрипте обработки формы savecomment.php
<?php
if(@$_POST['id']){

$description = $_POST['description'];
$description=iconv('utf-8','windows-1251',$description);
// $description =nl2br(htmlspecialchars($description )); // работает для json c UTF8
if(substr(PHP_OS,0,3)=='WIN') $n="\r\n"; else $n="\n";
$description =str_replace($n,'<br>',$description );
}
?>
не отрабатывает
$description =str_replace($n,'<br>',$description );
т.е. символы перевода каретки не заменяются на <br>,
т.е. при передаче через JSON с символами перевода каретки что-то происходит.

JSON нужен т.к. сайт и база Mysql используют windows-1251.
 
 Top
koras
Отправлено: 26 Сентября, 2011 - 12:03:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 224
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Согласно стандарту сообщение этого типа должно быть закодировано в UTF-8. Это подтверждается на практике. Сообщения JSON, закодированные в UTF-8 и передающиеся с таким типом контента, корректно отображаются вне зависимости от кодировки HTML-страницы. Сообщения JSON, закодированные в Windows-1251 и передающиеся с таким типом контента, некорректно отображаются вне зависимости от кодировки HTML-страницы.
 
 Top
mshdn
Отправлено: 26 Сентября, 2011 - 14:17:50
Post Id


Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




т.е. нужно перекодировать из windows-1251 в UTF-8
еще до JSON-передачи
в JS функции savecomm(id)?
т.е.
перекодировать переменную
description=document.getElementById(sd).value;?

(Отредактировано автором: 26 Сентября, 2011 - 14:19:49)

 
 Top
koras
Отправлено: 26 Сентября, 2011 - 14:46:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 224
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




да но в JS не знаю как это делается.
У меня все проекты изначально в UTF, я уже костылей с этим себе набил в прошлом, хватит.

(Отредактировано автором: 26 Сентября, 2011 - 14:47:38)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB