2

filename私は以下のコードを持っていますが、奇妙なことに、同じリクエストで複数回呼び出すと、()が異なっていても同じ値を返し続けます。

コードをステップスルーしたばかりで、stringbytesまったく同じ(つまり、GetBytes(string))でも同じ値を返しています。

    public static string Base64EncodeString(string filename)
    {
        var stringbytes = System.Text.Encoding.Default.GetBytes(filename);
        return Convert.ToBase64String(stringbytes);
    }
4

3 に答える 3

5

自分が見ていると思っているものが見えていないのではないかと思います。そのメソッドは、ファイル名の異なる値で呼び出した場合、同じ値を返しませんEncoding.Default...でサポートされていない文字を使用していない限り. (プラットフォーム固有のエンコーディングが本当にEncoding.Default必要でない限り、使用することはお勧めしません。)

于 2010-12-02T17:28:12.447 に答える
1

あなたのコードは正しいようです。Jon Skeet によって提案されたエンコーディングの問題ではない場合、静的な fileName および/または stringbytes 変数がどこかにあり、投稿されたコードが元のコードと 100% 同一ではないことが推測されます。

于 2010-12-02T17:46:59.543 に答える
0

読み込んでいるファイルを確認しましたか。開いているファイルをコピーしただけで、別の名前を付けて、内容を変更していない可能性があります。

于 2010-12-02T18:01:24.907 に答える