我想用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