Từ hướng dẫn MongoDB:Perl & MongoDB dữ liệu nhị phân
By default, all database strings are UTF8. To save images, binaries, and other non-UTF8 data, you can pass the string as a reference to the database.
Tôi lấy trang và muốn lưu trữ các nội dung để chế biến sau đó.
- tôi không thể dựa vào meta charset, do có nhiều trang có nội dung utf8 nhưng sai tuyên bố iso-8859-1 hoặc tương tự
- vì vậy không thể sử dụng
Encode
(không biết charset có nguồn gốc) - do đó, tôi muốn lưu trữ các nội dung đơn giản
as flow of bytes
(dữ liệu nhị phân) để chế biến sau
Fragment mã của tôi:
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,
}
}
);
}
Nhưng nhận được lỗi:
Wide character in subroutine entry at /opt/local/lib/perl5/site_perl/5.14.2/darwin-multi-2level/MongoDB/Collection.pm line 296.
Đây là nơi duy nhất mà tôi lưu trữ dữ liệu.
Câu hỏi: Cách duy nhất lưu trữ dữ liệu nhị phân trong MondoDB là mã hóa chúng, ví dụ: với base64?
Nó sẽ đưa ra cảnh báo tương tự nếu bạn đặt '$ rawhead' và' $ rawbody' thành mẫu được đưa ra trong sách hướng dẫn (ví dụ: '" \ xFF \ xFE \ xFF "')? – raina77ow