Mercurial > hg > orthanc
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 { |