summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/subrip_reader.cc11
-rw-r--r--test/subrip_reader_test.cc1
2 files changed, 12 insertions, 0 deletions
diff --git a/src/subrip_reader.cc b/src/subrip_reader.cc
index 5e9e010..3f1c23d 100644
--- a/src/subrip_reader.cc
+++ b/src/subrip_reader.cc
@@ -54,6 +54,17 @@ SubripReader::SubripReader (FILE* f)
line = string (buffer);
trim_right_if (line, boost::is_any_of ("\n\r"));
+ if (
+ line.length() >= 3 &&
+ static_cast<unsigned char> (line[0]) == 0xef &&
+ static_cast<unsigned char> (line[1]) == 0xbb &&
+ static_cast<unsigned char> (line[2]) == 0xbf
+ ) {
+
+ /* Skip Unicode byte order mark */
+ line = line.substr (3);
+ }
+
switch (state) {
case COUNTER:
{
diff --git a/test/subrip_reader_test.cc b/test/subrip_reader_test.cc
index 1779517..91437f2 100644
--- a/test/subrip_reader_test.cc
+++ b/test/subrip_reader_test.cc
@@ -303,5 +303,6 @@ test (boost::filesystem::path p)
BOOST_AUTO_TEST_CASE (subrip_read_test)
{
test ("sintel_en.srt");
+ test ("sintel_fr.srt");
test ("Fight.Club.1999.720p.BRRip.x264-x0r.srt");
}