Ну, есть три потенциальных источника проблем, которые я вижу:
- Регулярное выражение может быть неправильным.Вы действительно нуждаетесь , чтобы использовать регулярное выражение?Вы пытаетесь сопоставить шаблон или просто простую строку?
- Возможно, вам не удается получить не-ASCII ввод из командной строки.Вы должны вывести входную строку в терминах символов Unicode (см. Код позже).
- Возможно, вы читаете файл в неправильной кодировке.В настоящее время вы используете
FileReader
, который всегда использует кодировку платформы по умолчанию.Какая кодировка файла, который вы пытаетесь прочитать?Я бы рекомендовал использовать FileInputStream
в InputStreamReader
, используя явную кодировку (например, UTF-8), которая соответствует файлу.
Для отладки значений real в строкахЯ обычно использовал бы что-то вроде этого:
private static void dumpString(String text) {
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
System.out.printf("%d: %4h (%c)", i, c, c);
System.out.println();
}
}
Таким образом, вы можете увидеть точную кодовую точку UTF-16 в каждом char
в строке.