Fixes encodings in vcxproj files and adds script to automatically do it. (#1631)

diff --git a/PCbuild/fix_encoding.py b/PCbuild/fix_encoding.py
new file mode 100644
index 0000000..60a892a
--- /dev/null
+++ b/PCbuild/fix_encoding.py
@@ -0,0 +1,36 @@
+#! /usr/bin/env python3
+#
+# Fixes encoding of the project files to add UTF-8 BOM.
+#
+# Visual Studio insists on having the BOM in project files, and will
+# restore it on first edit. This script will go through the relevant
+# files and ensure the BOM is included, which should prevent too many
+# irrelevant changesets.
+#
+
+from pathlib import Path
+
+__author__ = "Steve Dower <steve.dower@python.org>"
+__version__ = "1.0.0.0"
+
+def fix(p):
+    with open(p, 'r', encoding='utf-8-sig') as f:
+        data = f.read()
+    with open(p, 'w', encoding='utf-8-sig') as f:
+        f.write(data)
+
+ROOT_DIR = Path(__file__).resolve().parent
+
+if __name__ == '__main__':
+    count = 0
+    print('Fixing:')
+    for f in ROOT_DIR.glob('*.vcxproj'):
+        print(f' - {f.name}')
+        fix(f)
+        count += 1
+    for f in ROOT_DIR.glob('*.vcxproj.filters'):
+        print(f' - {f.name}')
+        fix(f)
+        count += 1
+    print()
+    print(f'Fixed {count} files')