Commit f17a7a4f8ac2db3ad8a80d0c98443d198adc488d

Authored by Thiago Franco de Moraes
1 parent d6611774
Exists in master

Fix some problems with encoding on dicom patient name and dicom description

Showing 1 changed file with 19 additions and 17 deletions   Show diff stats
invesalius/reader/dicom.py
@@ -1282,17 +1282,12 @@ class Parser(): @@ -1282,17 +1282,12 @@ class Parser():
1282 except(KeyError): 1282 except(KeyError):
1283 return "" 1283 return ""
1284 1284
1285 - if (data):  
1286 - name = data.strip()  
1287 - encoding = self.GetEncoding()  
1288 -  
1289 - try:  
1290 - # Returns a unicode decoded in the own dicom encoding  
1291 - return utils.decode(name, encoding, 'replace')  
1292 - except(UnicodeEncodeError):  
1293 - return name  
1294 -  
1295 - return "" 1285 + encoding = self.GetEncoding()
  1286 + try:
  1287 + data = data.encode(encoding, errors="surrogateescape").decode(encoding)
  1288 + except Exception as err:
  1289 + print(err)
  1290 + return data
1296 1291
1297 def GetPatientID(self): 1292 def GetPatientID(self):
1298 """ 1293 """
@@ -1559,15 +1554,22 @@ class Parser(): @@ -1559,15 +1554,22 @@ class Parser():
1559 """ 1554 """
1560 try: 1555 try:
1561 data = self.data_image[str(0x0008)][str(0x103E)] 1556 data = self.data_image[str(0x0008)][str(0x103E)]
1562 - if data == "None":  
1563 - return _("unnamed")  
1564 - if (data):  
1565 - return data  
1566 - else:  
1567 - return _("unnamed")  
1568 except(KeyError): 1557 except(KeyError):
1569 return _("unnamed") 1558 return _("unnamed")
1570 1559
  1560 + encoding = self.GetEncoding()
  1561 + try:
  1562 + data = data.encode(encoding, errors="surrogateescape").decode(encoding)
  1563 + except Exception as err:
  1564 + print(err)
  1565 +
  1566 + if data == "None":
  1567 + return _("unnamed")
  1568 + if data:
  1569 + return data
  1570 + else:
  1571 + return _("unnamed")
  1572 +
1571 def GetImageTime(self): 1573 def GetImageTime(self):
1572 """ 1574 """
1573 Return the image time. 1575 Return the image time.