Я пытаюсь прочитать файл с разделителями и проанализировать его содержимое. В отличие от CSV, разделитель, спецификатор строк и т. Д. Не являются ASCII, т.е. U0014 и U00FE соответственно. Однако я не могу определить символ спецификатора строки (FE). Это потому, что значение персонажа больше 128 или что-то еще?Идентификация и сопоставление символов не ascii в файлах
Вот простая программа, которая иллюстрирует основную проблему. Как я могу сделать эту работу? Вот ссылка на очень маленький тестовый файл. https://www.dropbox.com/s/1cilircwc3pq78c/nonascii.dat?dl=0
Благодаря
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.Reader;
public class CharMatch {
public static void main(String[] args)
throws Exception {
final String pathname = "/home/vinayb/Downloads/nonascii.dat";
final File file = new File(pathname);
final String encoding = "UTF-8";
final PrintStream out = new PrintStream(System.out, true, encoding);
final Reader r = new BufferedReader(new InputStreamReader(
new FileInputStream(file), encoding));
final LineIterator it = FileUtils.lineIterator(file, encoding);
try {
//read a line
final String line = it.nextLine();
final char[] chars = line.toCharArray();
for (char c : chars) {
out.println(c + " , with decimal value: " + Character.getNumericValue(c) + " and hexa value: " + Integer.toHexString(Character.getNumericValue(c)));
}
out.println("------------------------------------");
final String expectedDelimiter = fromUnicode("0014");
final String expectedStringQualifier = fromUnicode("00FE");
out.println("##### expected delimiter:" + expectedDelimiter);
out.println("##### expected string qualifier:" + expectedStringQualifier);
String[] items = line.split(expectedDelimiter);
out.println("#### " + items.length + " " + items[0]);
if (line.contains(expectedDelimiter)) {
out.println("Found delimiter"); ////=======> can match this
}
if (line.contains(expectedStringQualifier)) {
out.println("Found string qualifier"); //=======> can't match this
}
} finally {
LineIterator.closeQuietly(it);
}
}
private static String fromUnicode(String codePoint) {
return "" + (char) Integer.parseInt(codePoint, 16);
}
}
"символ последовательности символов"? И что это должно быть? – fge
Это символ, используемый для классификации строк. Обычно используемым разделителем является «Например, в csv мы использовали разделители таким образом:« John Doe »,« 123, Main Street ». В этом случае разделителем является 00FE. См. Эту ссылку для того, что похоже на http : //en.wikipedia.org/wiki/ISO/IEC_8859-1 –