О паразитном пробеле в PostgreSQL
mgorshkov 11.12.2012 15:05
Хотел еще несколько лет назад отрепортить баг о пробеле в полях типа text, но не было острой необходимости.
Видел также подобный тред в этом форуме, но из него не понял, решена ли проблема.
Имеем: Parser текущей версии, драйвер PostgreSQL текущей версии.
Кодировка request/response для сайта windows-1251.
ClientCharset для connect string с базой UTF-8.
Создаем тестовую табличку:
create table parser_test ( comment text );
insert into parser_test( comment ) values ('');
Делаем тестовую страничку:
^if(def $form:comment){
^pSQL.void{
UPDATE parser_test SET comment = '$form:comment'
}
}
$comment[^pSQL.table{
SELECT comment FROM parser_test
}]
<form>
<textarea name="comment">$comment.comment</textarea>
<input type="submit"></input>
</form>
Запускаем. Вводим русскую буковку "а". Получаем ее же, но с пробелом. Действительно, select length(comment) from parser_test; выдает двойку и присутствует паразитный концевой пробел. Вводим test - пробела нет. Вводим testабвгд - пробел есть. Вводим testабв - пробела нет.
Явно имеет место какой-то баг с подсчетом длины и/или округлением. Для полей character varying - все нормально. Наверное, это связано с перекодировками - на латинице все нормально и в utf-8 для сайта тоже все нормально. Что делать для windows-1251? На данный момент не могу воспользоваться utf-8.
- О паразитном пробеле в PostgreSQL, mgorshkov 11.12.2012 15:05
- Ответ, Misha v.3 [M] 11.12.2012 15:35
- Ответ, mgorshkov 11.12.2012 15:46
- Ответ, Misha v.3 [M] 11.12.2012 15:57
- Ответ, mgorshkov 11.12.2012 18:48