:私はページをフェッチしてるのPerl&MongoDBのバイナリデータ<a href="https://metacpan.org/module/MongoDB%3a%3aDataTypes">MongoDB</a>マニュアルから
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.
は、後の処理のためにコンテンツを格納します。
- 多くのページがUTF8のコンテンツを持っていますが、誤って宣言するISO-8859-1または類似
- ので
Encode
(元の文字セットを知らない) を使用することはできませんので、私は、メタ文字セットに依存することはできません
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,
}
}
);
}
:
フラグメントのコンテンツ単にas flow of bytes
(バイナリデータ)を保存したいです10
しかし、エラーが表示されます。
Wide character in subroutine entry at /opt/local/lib/perl5/site_perl/5.14.2/darwin-multi-2level/MongoDB/Collection.pm line 296.
は、これは私がデータを格納する唯一の場所です。
質問:MondoDBにバイナリデータを格納する唯一の方法は、それらをエンコードすることです。ベース64?
マニュアルで与えられたサンプル( '' \ xFF \ xFE \ xFF '')に' $ rawhead'と '' $ rawbody'をセットした場合、同じ警告が表示されますか? – raina77ow