CouchDB で _id に設定する文字列について

当然これは仕様なのだろうが(というかすべてのバグも仕様と言えるのだろうが)、CouchDBにドキュメントをPOSTした際のLocation ヘッダに含まれる _id 部分はURLエンコードされていない。従って、{_id: "http://example.com/|123"} のようにURLエンコードが必要な文字列を _id に設定すると色々と困りそう。とりあえず PHP の file_get_contents() はドキュメントのポストに成功しても、Location ヘッダが正常でないので404になってしまう。
似たような問題が [COUCHDB-708] Newlines in document locations break header parsing - ASF JIRA に挙げられてるけど、どう考えてもこの挙動おかしいよね。

追記

PHP の file_get_contents() でリダイレクトを拾わないようにするには、コンテキストオプションの $options['http']['follow_location'] を false に設定すれば良さそうです。
参考:PHP: HTTP コンテキストオプション - Manual