0

C# プログラムで作成された Java (アンドロイド) のバイナリ ファイルを読み込もうとしていますが、問題が発生しました。C# は、デフォルトでバイナリ ファイルの文字列を UTF-7 でエンコードしますが、Java は UTF-8 を使用します。これはもちろん、文字列が正しく読み込まれないことを意味します。

文字列を UTF-8 ではなく UTF-7 として読み取る方法を考えました。また、フロートでも同様の問題があることに気付きました。C#とJavaはそれらを異なる方法で処理しますか?もしそうなら、どうすればJavaで正しく読むことができますか?

編集: C# プログラムで BinaryWriter クラスを使用し、Java で DataInputStream クラスを使用しています。

4

1 に答える 1

1

特に指定がない限り、C# は UTF-8 エンコーディングを使用します。

編集ここのドキュメントは正しくありません。
ソースを見て、次のコードを使用して、文字列の長さを7 ビットでエンコードされた整数BinaryWriterとして書き込みます。

    protected void Write7BitEncodedInt(int value) {
        // Write out an int 7 bits at a time.  The high bit of the byte, 
        // when on, tells reader to continue reading more bytes. 
        uint v = (uint) value;   // support negative numbers
        while (v >= 0x80) { 
            Write((byte) (v | 0x80));
            v >>= 7;
        }
        Write((byte)v); 
    }

読み取るバイト数を確認するには、このコードを Java に移植する必要があります。

于 2012-09-09T20:35:18.740 に答える