There are a number of places in Puppet where the internal file abstraction Puppet::FileSystem is not used, but should be, to enforce files are read properly as UTF-8. This primarily affects Windows, where the local codepage frequently causes unnecessary conversions if UTF-8 is not explicitly specified.
An initial spike is in the branch - https://github.com/Iristyle/puppet/commits/ticket/stable/PUP-5728-convert-remaining-File-read-calls-to-Puppet-FileSystem that built on the work in
Two other items of note:
- PE-13721 exposed a similar issue in the puppet_enterprise module in a Japanese Windows - this module should be spot checked and additional tickets filed if similar problems are discovered
- Mcollective should also be analyzed, given it's Ruby code... for areas where it touches the FileSystem, etc (this should result in additional tickets if necessary)