Из руководства MongoDB:
По умолчанию все строки базы данных имеют кодировку UTF8. Для сохранения изображений, двоичных файлов, и другие данные, отличные от UTF8, вы можете передать строку как ссылку на база данных.
Я извлекаю страницы и хочу сохранить содержимое для последующей обработки.
Encode
(не знаю исходный charset) как поток байтов
(двоичные данные) для последующей обработкиФрагмент моего кода:
sub save {
my ($self, $ok, $url, $fetchtime, $request ) = @_;
my $rawhead = $request->headers_as_string;
my $rawbody = $request->content;
$self->db->content->insert(
{ "url" => $url, "rhead" => \$rawhead, "rbody" => \$rawbody } ) #using references here
if $ok;
$self->db->links->update(
{ "url" => $url },
{
'$set' => {
'status' => $request->code,
'valid' => $ok,
'last_checked' => time(),
'fetchtime' => $fetchtime,
}
}
);
}
Но получаю ошибку:
Широкий символ в записи подпрограммы в /opt/local/lib/perl5/site_perl/5.14.2/darwin-multi-2level/MongoDB/Collection.pm строка 296.
Это единственное место, где я храню данные.
Вопрос: Единственный способ хранить бинарные данные в MondoDB — это кодировать их, например. с base64?