(with-open-file (s "test.txt" :direction :input)
 (let ((buf (make-string (file-length s))))
  (read-sequence buf s)
  buf))

↑のようにread-sequenceで日本語で書かれたファイル(ここではtest.txt)を読み込んで文字列に格納すると,その文字列にNULL文字が入ってしまいます.
例えばtest.txtの中身が

日本語で書かれた文章

であった場合,格納される文字列は

"日本語で書かれた文章^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@"

となってしまいます。

格納する変数のサイズの指定が悪いと思うのですが,どうすればピッタリ格納出来るでしょうか?
ちなみに処理系はsbclでファイルの文字コードはUTF-8です。