0

我正在尝试读取由 C# 程序创建的 Java (android) 中的二进制文件,但是我偶然发现了一个问题。C# 默认使用 UTF-7 编码二进制文件中的字符串,Java 使用 UTF-8。这当然意味着字符串没有正确加载。

我想知道如何将字符串读取为 UTF-7 而不是 UTF-8。我还注意到我在浮动方面遇到了类似的问题。C# 和 Java 是否以不同的方式处理它们,如果是,我如何在 Java 中正确读取它。

编辑:我在 C# 程序中使用 BinaryWriter 类,在 java 中使用 DataInputStream 类。

4

1 回答 1

1

除非另有说明,否则 C# 使用 UTF-8 编码。

编辑这里的文档不正确。
查看源代码,使用以下代码BinaryWriter将字符串长度写入7 位编码整数:

    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 回答