From 75186475ee45de85b5413a8e5c9e05651890965f Mon Sep 17 00:00:00 2001 From: mcninch <19601917+mcninch@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:45:39 -0800 Subject: [PATCH] Update STDR.py Invalid UTF-8 characters existing in the STDF cause UnicodeDecodeError to be thrown when .decode() is called. Exception has occurred: UnicodeDecodeError 'utf-8' codec can't decode byte 0x96 in position 57: invalid start byte --- Semi_ATE/STDF/STDR.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Semi_ATE/STDF/STDR.py b/Semi_ATE/STDF/STDR.py index 5419d58..e8ad7d4 100644 --- a/Semi_ATE/STDF/STDR.py +++ b/Semi_ATE/STDF/STDR.py @@ -1641,7 +1641,7 @@ def _unpack_item(self, FieldID): raise STDFError("%s.%s(%s) : Not enough bytes in buffer (need %s while %s available)." % (self.id, method_name,FieldKey, Bytes, len(self.buffer))) working_buffer = self.buffer[0:int(Bytes)] self.buffer = self.buffer[int(Bytes):] - result = working_buffer.decode() + result = working_buffer.decode('utf-8',errors='replace') elif Bytes == 'n': # C*n working_buffer = self.buffer[0:1] self.buffer = self.buffer[1:] @@ -1650,14 +1650,14 @@ def _unpack_item(self, FieldID): raise STDFError("%s.%s(%s) : Not enough bytes in buffer (need %s while %s available)." % (self.id, FieldKey, n_bytes, len(self.buffer))) working_buffer = self.buffer[0:n_bytes] self.buffer = self.buffer[n_bytes:] - result = working_buffer.decode('utf-8') + result = working_buffer.decode('utf-8',errors='replace') elif Bytes == 'f': # C*f n_bytes = self.get_fields(Ref)[3] if len(self.buffer) < n_bytes: raise STDFError("%s.%s(%s) : Not enough bytes in buffer (need %s while %s available)." % (self.id,method_name, FieldKey, n_bytes, len(self.buffer))) working_buffer = self.buffer[0:n_bytes] self.buffer = self.buffer[n_bytes:] - result = working_buffer.decode() + result = working_buffer.decode('utf-8',errors='replace') else: raise STDFError("%s.%(%s) : Unsupported type '%s'." % (self.id, method_name,FieldKey, '*'.join((Type, Bytes)))) if self.local_debug: print("%s.%s(%s)\n '%s' [%s] -> %s" % (self.id,method_name, FieldKey, self.hexify(pkg), '*'.join((Type, Bytes)), result))