MongoDBマニュアルから:
デフォルトでは、すべてのデータベース文字列はUTF8です。画像、バイナリ、およびその他の非UTF8データを保存するために、データベースへの参照として文字列を渡すことができます。
ページを取得していて、後で処理するためにコンテンツを保存したいと思います。
- 多くのページにutf8コンテンツが含まれているが、iso-8859-1などを誤って宣言しているため、メタ文字セットに依存できません。
- したがって、使用できません
Encode
(元の文字セットがわかりません) as flow of bytes
したがって、後で処理するためにコンテンツ(バイナリデータ)を単純に保存したい
私のコードの断片:
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でそれらをエンコードすることですか?