# HG changeset patch # User Alain Mazy # Date 1683647313 -7200 # Node ID 80026139838151cf776482ec934009d1ba8a2d01 # Parent 0035d43185943cb9ab3479d34c8b18e74b099b88 Made Orthanc more resilient to common spelling errors in SpecificCharacterSet diff -r 0035d4318594 -r 800261398381 NEWS --- a/NEWS Fri May 05 09:03:04 2023 +0200 +++ b/NEWS Tue May 09 17:48:33 2023 +0200 @@ -6,6 +6,7 @@ * Fix decoding of YBR_FULL RLE images for which the "Planar Configuration" tag (0028,0006) equals 1 +* Made Orthanc more resilient to common spelling errors in SpecificCharacterSet * Upgraded dependencies for static builds: - boost 1.82.0 diff -r 0035d4318594 -r 800261398381 OrthancFramework/Sources/Enumerations.cpp --- a/OrthancFramework/Sources/Enumerations.cpp Fri May 05 09:03:04 2023 +0200 +++ b/OrthancFramework/Sources/Enumerations.cpp Tue May 09 17:48:33 2023 +0200 @@ -31,6 +31,7 @@ #include #include #include +#include namespace Orthanc { @@ -1933,6 +1934,11 @@ std::string s = Toolbox::StripSpaces(specificCharacterSet); Toolbox::ToUpperCase(s); + // handle common spelling mistakes + boost::replace_all(s, "ISO_IR_", "ISO_IR "); + boost::replace_all(s, "ISO_2022_IR_", "ISO 2022 IR "); + + // http://dicom.nema.org/medical/dicom/current/output/html/part03.html#sect_C.12.1.1.2 // https://github.com/dcm4che/dcm4che/blob/master/dcm4che-core/src/main/java/org/dcm4che3/data/SpecificCharacterSet.java if (s == "ISO_IR 6" || diff -r 0035d4318594 -r 800261398381 OrthancFramework/UnitTestsSources/FromDcmtkTests.cpp --- a/OrthancFramework/UnitTestsSources/FromDcmtkTests.cpp Fri May 05 09:03:04 2023 +0200 +++ b/OrthancFramework/UnitTestsSources/FromDcmtkTests.cpp Tue May 09 17:48:33 2023 +0200 @@ -314,6 +314,10 @@ ASSERT_TRUE(GetDicomEncoding(e, "ISO_IR 192")); ASSERT_EQ(Encoding_Utf8, e); ASSERT_TRUE(GetDicomEncoding(e, "GB18030")); ASSERT_EQ(Encoding_Chinese, e); ASSERT_TRUE(GetDicomEncoding(e, "GBK")); ASSERT_EQ(Encoding_Chinese, e); + + // common spelling mistakes + ASSERT_TRUE(GetDicomEncoding(e, "ISO_IR_100")); ASSERT_EQ(Encoding_Latin1, e); + ASSERT_TRUE(GetDicomEncoding(e, "ISO_2022_IR_6")); ASSERT_EQ(Encoding_Ascii, e); }