fsk33 2023-03-11 21:04 采纳率: 73.5%
浏览 180
已结题

C# UTF8转码,最后一个中文字符为乱码

用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"),能收到信息,但名字是乱码(三个字的中文,最后一个字为乱码)

  • 写回答

7条回答 默认 最新

  • 文盲老顾 新星创作者: 信息安全技术领域 2023-03-11 21:13
    关注

    nameBytes 的数据你发两个上来,要不没法测试,也不知道数据是否完整啊

    评论

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 修改了问题 3月15日
  • 创建了问题 3月11日