用fo-dicom将中文值写入机构名称

时间:2016-06-12 08:00:32

标签: dicom fo-dicom

很抱歉我不擅长DICOM。我试图用fo-dicom用中文单词写入DICOM标签(0008,0080)。但是发现Tag值只显示结果文件中的混乱代码。请帮忙查看。

C#代码如下:

var file = DicomFile.Open(@"C:\Users\Administrator\Desktop\20D08F04"); 

//file.Dataset.Add(DicomTag.SpecificCharacterSet, "GB18030");
//file.Dataset.Add(DicomTag.SpecificCharacterSet, "ISO_IR 192");
//I already tried to specified the 0008,0005 with GBK and Utf-8. but it doesn't work. 
file.Dataset.Add(DicomTag.InstitutionName, "测试");

file.Save(@"C:\Users\Administrator\Desktop\test123.dcm");

生成的文件在DCMTK编辑器中看起来很糟糕。

愿你们中的任何人能帮助我吗?

提前致谢

enter image description here

更新

我确信DVTK Dicom文件编辑器支持中文字符集。 因为有另一个属性Patient's Name的值是中文。并且可以正确查看。感谢。

enter image description here

1 个答案:

答案 0 :(得分:2)

.NET fo-dicom 中的默认编码是US-ASCII。如果在之后设置特定字符集 ,则打开DICOM文件,解析在打开操作中完成后无效。 特定字符集仅在已在DICOM文件中设置时才适用。

您可以做的是设置"后备编码"如果在DicomFile.Open的参数列表中未在DICOM文件中指定特定字符集,则使用。

试试这个例子:

var file = DicomFile.Open(fileName, DicomEncoding.GetEncoding("GB18030"));

正如@johnelemans在评论中指出的那样,还要验证你的观众是否能够显示中文字符集。