diff OrthancServer/FromDcmtkBridge.cpp @ 1087:e07b90fb00eb

more encodings
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 04 Aug 2014 18:12:21 +0200
parents e56c3ed8d738
children e494ceb8d763
line wrap: on
line diff
--- a/OrthancServer/FromDcmtkBridge.cpp	Mon Aug 04 17:57:45 2014 +0200
+++ b/OrthancServer/FromDcmtkBridge.cpp	Mon Aug 04 18:12:21 2014 +0200
@@ -128,8 +128,7 @@
     if (dataset.findAndGetOFString(DCM_SpecificCharacterSet, tmp).good())
     {
       std::string characterSet = Toolbox::StripSpaces(std::string(tmp.c_str()));
-
-      // TODO Add more encodings
+      Toolbox::ToUpperCase(characterSet);
 
       if (characterSet == "ISO_IR 6" ||
           characterSet == "ISO_IR 192")
@@ -140,6 +139,38 @@
       {
         encoding = Encoding_Latin1;
       }
+      else if (characterSet == "ISO_IR 101")
+      {
+        encoding = Encoding_Latin2;
+      }
+      else if (characterSet == "ISO_IR 109")
+      {
+        encoding = Encoding_Latin3;
+      }
+      else if (characterSet == "ISO_IR 110")
+      {
+        encoding = Encoding_Latin4;
+      }
+      else if (characterSet == "ISO_IR 148")
+      {
+        encoding = Encoding_Latin5;
+      }
+      else if (characterSet == "ISO_IR 144")
+      {
+        encoding = Encoding_Cyrillic;
+      }
+      else if (characterSet == "ISO_IR 127")
+      {
+        encoding = Encoding_Arabic;
+      }
+      else if (characterSet == "ISO_IR 126")
+      {
+        encoding = Encoding_Greek;
+      }
+      else if (characterSet == "ISO_IR 138")
+      {
+        encoding = Encoding_Hebrew;
+      }
       else if (!characterSet.empty())
       {
         LOG(WARNING) << "Value of Specific Character Set (0008,0005) is not supported: " << characterSet;