nixp.ru v3.0

23 мая 2017,
вторник,
23:49:16 MSK

DevOps с компанией «Флант»
Аватар пользователя Сергей Костин
Сергей Костин написал 15 марта 2010 года в 13:37 (1483 просмотра) Ведет себя как мужчина; открыл 3 темы в форуме, оставил 13 комментариев на сайте.

Проблема возникает при загрузке файла на сервер, при использовании директивы use encoding 'utf8\′;

Ошибка: utf8 «\\x8C» does not map to Unicode at ……..

Лог:

[Mon Mar 15 13:04:11 2010] [error] [client 127.0.0.1] utf8 «\\xDA» does not map to Unicode at (eval 10) line 5., referer: localhost:8002/form.html

[Mon Mar 15 13:04:11 2010] [error] [client 127.0.0.1] utf8 «\\xFF» does not map to Unicode at (eval 10) line 5., referer: localhost:8002/form.html

[Mon Mar 15 13:04:11 2010] [error] [client 127.0.0.1] utf8 «\\xE1» does not map to Unicode at (eval 10) line 5., referer: localhost:8002/form.html

…………………

[Mon Mar 15 13:04:11 2010] [error] [client 127.0.0.1] Malformed multipart POST, referer: localhost:8002/form.html

[Mon Mar 15 13:04:11 2010] [error] [client 127.0.0.1] Premature end of script headers: test.pl, referer: localhost:8002/form.html

Код.

form.html(Форма)

<form enctype="multipart/form-data" method="post" action="test.pl">
<input type="file" name="icon" />
<input type="submit" name="buttom" value="OK" />
</form>

 

test.pl (скрипт загружает файл)

#!/usr/bin/perl
 
use CGI;
 
use encoding 'utf8';
 my $cgi = CGI->new;
 
# Загрузка файла от пользователя
my $file_name = $cgi->param('icon');
open(OUT,">/some_path/$file_name"); # читаем входной поток и пишем в файл binmode(OUT, ':bytes'); while (<$file_name>) { print OUT $_; } close(OUT);

 

Насколько я понял ошибка кроется в модуле CGI.pm. Кто-нибудь сталкивался с такой проблемой?

 

Дмитрий Шурупов

Почему бы не «use utf8;» вместо use encoding… ?

Сергей Костин

use utf8 — не влияет на интерпретацию строк со сброшенным флагом UTF-8. Прагма use encoding более функциональна.

НО… Скрипт при использовании прагмы use utf8, работает и мне этот вариант подходит.

Спасибо, Дмитрий.