If you read enough files created on a windows box you'll eventually run into this. ""\xEF\xBB\xBFyour expected string"
instead of "your expected string"
. I recently ran into again while parsing some csv files exported in windows. In order to parse the string you'll need to remove what is called a Byte Order Mark.
Just search for "\xEF\xBB\xBF"
and remove it.
file = File.read("filename.txt").sub("\xEF\xBB\xBF", '')
That will usually work but if the string encoding is ASCII-8Bit it will throw the error Encoding::CompatibilityError: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)
If you force it to be UTF-8 first you shouldn't have any issues.
file = File.read("filename.txt").force_encoding('utf-8').encode.sub("\xEF\xBB\xBF", '')