用C#编的DICOM医学图像接收程序,当发送患者列表中登记的姓名是拼音或者是两个字的中文名时,接收到的姓名可正常显示为拼音或两字中文,但如果发送患者列表中登记的是三个字的中文名时,最后一位中文字显示为乱码。另外,从发送端设置里查到,那边DICOM图像编码格式是ISO_IR 192,属于UTF-8编码,但我无论怎么转换都没效果,可能操作不对吧。以下是转码代码如下(只列出了姓名获取的代码):
class PatientInfo
//患者姓名
public string patName
{
get;
set;
}
string nameInDicom = Ddataset.Get<string>(DicomTag.PatientName, "NONAME").Replace("\0", "");
byte[] nameBytes = System.Text.Encoding.GetEncoding("GB18030").GetBytes(nameInDicom);
string nameInChinese = System.Text.Encoding.UTF8.GetString(nameBytes);
patientInfo.patName = nameInChinese;
现输出的patientInfo.patName,三个字的中文名,最后一位始终乱码,这里卡住了,需要代码。
另外,填写GetEncoding("ISO_IR 192"),无效,运行出来数据库里收不到患者信息,如果括号里GetEncoding("GBK或GB18030"),能收到信息,但名字是乱码(三个字的中文,最后一个字为乱码)