Я ищу Java-реализацию парсера CSV (значения, разделенные запятыми) с правильной обработкой данных Unicode, например. CSV-файлы UTF-8 с китайским текстом. Я полагаю, что такой синтаксический анализатор должен внутренне использовать методы, связанные с кодовой точкой, при повторении, сравнении и т. Д. Лицензия Apache 2 или аналогичная будет работать лучше всего.
Парсер CSV с поддержкой Unicode в Java
Ответы (3)
Я не верю в изобретение велосипеда. Так что я не хочу писать свой собственный синтаксический анализатор и мучиться с той же головной болью, что и кто-то другой.
Лично мне нравится анализатор CSV от Ostermiller. У них также есть репозиторий Maven, если интересно.
Вы также можете проверить OpenCSV. Существует вопрос о переполнении стека, касающийся синтаксического анализа юникода. .
Самому написать довольно легко. Откройте файл с помощью FileInputStream и InputStreamReader, использующих кодировку UTF-8. Оберните его в BufferedReader, который вы можете перебирать с помощью readLine(). Получить каждую строку как строку. Используйте регулярные выражения, чтобы разделить его на поля.
Единственная сложная часть заключается в построении регулярных выражений, чтобы они не рассматривали запятые, заключенные в кавычки, как разделители полей.
Приведенный выше подход немного неэффективен, но достаточно быстр для большинства приложений. Если у вас есть реальные требования к производительности, вам понадобится что-то, что перебирает символы. Я написал один несколько лет назад, который использует конечный автомат, который работал нормально.