comparison OrthancServer/FromDcmtkBridge.cpp @ 957:63973b76a51f

detection of encoding
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 25 Jun 2014 21:21:18 +0200
parents 2fd5a163776d
children 2f76b92addd4
comparison
equal deleted inserted replaced
956:2fd5a163776d 957:63973b76a51f
59 #include <dcmtk/dcmdata/dcdict.h> 59 #include <dcmtk/dcmdata/dcdict.h>
60 #include <dcmtk/dcmdata/dcfilefo.h> 60 #include <dcmtk/dcmdata/dcfilefo.h>
61 #include <dcmtk/dcmdata/dcistrmb.h> 61 #include <dcmtk/dcmdata/dcistrmb.h>
62 #include <dcmtk/dcmdata/dcuid.h> 62 #include <dcmtk/dcmdata/dcuid.h>
63 #include <dcmtk/dcmdata/dcmetinf.h> 63 #include <dcmtk/dcmdata/dcmetinf.h>
64 #include <dcmtk/dcmdata/dcdeftag.h>
64 65
65 #include <dcmtk/dcmdata/dcvrae.h> 66 #include <dcmtk/dcmdata/dcvrae.h>
66 #include <dcmtk/dcmdata/dcvras.h> 67 #include <dcmtk/dcmdata/dcvras.h>
67 #include <dcmtk/dcmdata/dcvrcs.h> 68 #include <dcmtk/dcmdata/dcvrcs.h>
68 #include <dcmtk/dcmdata/dcvrda.h> 69 #include <dcmtk/dcmdata/dcvrda.h>
116 } 117 }
117 118
118 119
119 Encoding FromDcmtkBridge::DetectEncoding(DcmDataset& dataset) 120 Encoding FromDcmtkBridge::DetectEncoding(DcmDataset& dataset)
120 { 121 {
121 // TODO Implement this! 122 // By default, assume UTF-8 encoding (as in dcm2xml.cc)
122 return Encoding_Latin1; 123 Encoding encoding = Encoding_Utf8;
124
125 OFString tmp;
126 if (dataset.findAndGetOFString(DCM_SpecificCharacterSet, tmp).good())
127 {
128 std::string characterSet = Toolbox::StripSpaces(std::string(tmp.c_str()));
129
130 // TODO Add more encodings
131
132 if (characterSet == "ISO_IR 6" ||
133 characterSet == "ISO_IR 192")
134 {
135 encoding = Encoding_Utf8;
136 }
137 else if (characterSet == "ISO_IR 100")
138 {
139 encoding = Encoding_Latin1;
140 }
141 else if (!characterSet.empty())
142 {
143 LOG(WARNING) << "Value of Specific Character Set (0008,0005) is not supported: " << characterSet;
144 // Fallback to ASCII (remove all special characters)
145 encoding = Encoding_Ascii;
146 }
147 }
148
149 return encoding;
123 } 150 }
124 151
125 152
126 void FromDcmtkBridge::Convert(DicomMap& target, DcmDataset& dataset) 153 void FromDcmtkBridge::Convert(DicomMap& target, DcmDataset& dataset)
127 { 154 {