Maybe the windows files are in a Microsoft encoding?
I can't say for filebeat, but charset setting in a codec is a from
setting, meaning that, say you have a file in CP1252 encoding (Windows) and Logstash/Elasticsearch must have and expects UTF8 then you set the charset setting to "CP1252".
Here you are saying, "I know I have X encoding so please convert it to UTF8".
A few people have tried "universal string encoding detection" of an arbitrary piece of text but most have failed because the confidence level of the detection is a function of string length and the number of occurrences of multi-byte sequences.
So Logstash does not know what the source charset of the input data is. You can try ASCII_8BIT because then LS will force encode to UTF8 and will replace any illegal UTF8 sequences with a � character.