Mercurial > hg > orthanc
diff OrthancServer/FromDcmtkBridge.cpp @ 1090:e494ceb8d763
support more encodings
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 05 Aug 2014 12:04:23 +0200 |
parents | e07b90fb00eb |
children | 552a038f7c96 |
line wrap: on
line diff
--- a/OrthancServer/FromDcmtkBridge.cpp Tue Aug 05 08:49:25 2014 +0200 +++ b/OrthancServer/FromDcmtkBridge.cpp Tue Aug 05 12:04:23 2014 +0200 @@ -128,56 +128,26 @@ if (dataset.findAndGetOFString(DCM_SpecificCharacterSet, tmp).good()) { std::string characterSet = Toolbox::StripSpaces(std::string(tmp.c_str())); - Toolbox::ToUpperCase(characterSet); - if (characterSet == "ISO_IR 6" || - characterSet == "ISO_IR 192") - { - encoding = Encoding_Utf8; - } - else if (characterSet == "ISO_IR 100") + if (characterSet.empty()) { - 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; + // Empty specific character set tag: Use the default encoding } - else if (characterSet == "ISO_IR 148") - { - encoding = Encoding_Latin5; - } - else if (characterSet == "ISO_IR 144") + else if (GetDicomEncoding(encoding, characterSet.c_str())) { - encoding = Encoding_Cyrillic; - } - else if (characterSet == "ISO_IR 127") - { - encoding = Encoding_Arabic; + // The specific character set is supported by the Orthanc core } - else if (characterSet == "ISO_IR 126") - { - encoding = Encoding_Greek; - } - else if (characterSet == "ISO_IR 138") + else { - encoding = Encoding_Hebrew; - } - else if (!characterSet.empty()) - { - LOG(WARNING) << "Value of Specific Character Set (0008,0005) is not supported: " << characterSet; - // Fallback to ASCII (remove all special characters) + LOG(WARNING) << "Value of Specific Character Set (0008,0005) is not supported: " << characterSet + << ", fallback to ASCII (remove all special characters)"; encoding = Encoding_Ascii; } } + else + { + // No specific character set tag: Use the default encoding + } return encoding; }