我想用java从用.net binaryWriter编写的文件中读取字符串。从用.net编写的文件中读取字符
我认为这个问题是因为.net二进制编写器为它的字符串使用了一些7位格式。通过在线研究,我发现这个代码应该像二进制阅读器的readString()方法那样工作。这是在扩展DataInputStream的CSDataInputStream类中。
public String readStringCS() throws IOException {
int stringLength = 0;
boolean stringLengthParsed = false;
int step = 0;
while(!stringLengthParsed) {
byte part = readByte();
stringLengthParsed = (((int)part >> 7) == 0);
int partCutter = part & 127;
part = (byte)partCutter;
int toAdd = (int)part << (step*7);
stringLength += toAdd;
step++;
}
char[] chars = new char[stringLength];
for(int i = 0; i < stringLength; i++) {
chars[i] = readChar();
}
return new String(chars);
}
第一部分似乎正在工作,因为它正在返回正确数量的字符(7)。但是当它读到人物时,他们都是中国人!我敢肯定,问题是DataInputStream.readChar(),但我不知道为什么它不工作......我一直在使用
Character.reverseBytes(readChar());
读取字符,看是否将工作甚至尝试,但它只会返回不同的中文字符。
也许我需要模仿.net的阅读字符的方式?我会怎么做呢?
还有什么我不见了?
谢谢。
一个.net二进制编码器可以写入任何编码的字符串。它默认为UTF8,但可能使用UTF-7。 Java可以不处理转换不同的字符编码,而不必诉诸自定义代码来做到这一点?同时寻找确定的文字编码时使用的字符编码将有所帮助。 – Chris