Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions wes.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from __future__ import print_function

import sys, csv, re, argparse, os, zipfile, io
import unicodedata
import logging
from collections import Counter, OrderedDict
import copy
Expand Down Expand Up @@ -39,9 +40,12 @@ def charset_convert(data):
return data

except (ImportError, ModuleNotFoundError):
# Parse everything as ASCII
# Parse everything as UTF-8 (fallback) to preserve non-ASCII like Spanish accents
def charset_convert(data):
data = data.decode('ascii', 'ignore')
try:
data = data.decode('utf-8', 'ignore')
except Exception:
data = data.decode('latin-1', 'ignore')

if sys.version_info.major == 2:
data = data.encode(sys.getfilesystemencoding())
Expand Down Expand Up @@ -543,6 +547,12 @@ def mark_superseeded_hotfix(filtered, superseeded, marked):
# Determine Windows version based on the systeminfo input file provided
def determine_product(systeminfo):
systeminfo = charset_convert(systeminfo)
# Normalize accents for Spanish/French etc (issue #32)
try:
systeminfo = unicodedata.normalize('NFKD', systeminfo).encode('ascii', 'ignore').decode('ascii')
except Exception:
pass


# Fixup for 7_sp1_x64_enterprise_fr_systeminfo_powershell.txt
systeminfo = systeminfo.replace('\xA0', '\x20')
Expand Down