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

使用fo dicom将中文值写入机构名称,dicom,fo-dicom,Dicom,Fo Dicom,对不起,我不擅长DICOM。我试着用fo DICOM的中文单词写进DICOM标签(00080080)。但是找到的标记值只是在结果文件中显示混乱的代码。请帮忙复习一下 C#代码如下: var file = DicomFile.Open(@"C:\Users\Administrator\Desktop\20D08F04"); //file.Dataset.Add(DicomTag.SpecificCharacterSet, "GB18030"); //file.Dataset.Add(Dicom

对不起,我不擅长DICOM。我试着用fo DICOM的中文单词写进DICOM标签(00080080)。但是找到的标记值只是在结果文件中显示混乱的代码。请帮忙复习一下

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编辑器中看起来像是被吹走的

你们谁能帮助我

提前谢谢

已更新

我确信
DVTK
Dicom文件编辑器支持中文字符集。 因为还有另一个属性
患者姓名
,其值为中文。并且可以正确地查看。谢谢


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

如果DICOM文件中未指定特定的字符集,您可以在
DicomFile.Open的参数列表中设置要使用的“回退编码”

请尝试以下示例:

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

正如@johnelemans在评论中指出的,还要验证您的查看器是否能够显示中文字符集。

查看器是否支持该字符集?这并不意味着如果查看器工具无法显示名称,则名称设置不正确。用你自己的代码阅读它,看看它是否正确返回。您可能还需要设置特定的字符集(00080005)标记。@Johneleman请查看我的更新。谢谢。嗨,安德斯·古斯塔夫森,它坏了。但你的回答激励了我。我试图添加具有指定编码的标记。代码如下所示:
DicomItem di=new-DicomShortText(DicomTag.InstitutionName,DicomEncoding.GetEncoding(“GB18030”),”磊一二");                 file.Dataset.Add(di);
谢谢。是否使用指定的编码打开并不重要。