gpt4 book ai didi

c# - .Net 4.0 中的 ISO_IR 58 支持

转载 作者:太空狗 更新时间:2023-10-30 00:30:50 24 4
gpt4 key购买 nike

DICOM 中有一个名为 ISO_IR 58 的双字节字符集。据我所知,.Net 中的等效编码是 gb2312。我正在尝试将 ISO_IR 58 个字符编码为 7 位 ASCII 以用于医疗系统之间的通信。

在 java 世界中,字符串 gb2312 用于执行此编码。

首先看一下这个 ISO_IR 87 的例子(ISO_IR 87 等于 .Net 中的 iso-2022-jp):

Encoding enc = Encoding.GetEncoding("iso-2022-jp");
byte[] bytes = enc.GetBytes("叙収參参^去厰厦厘=却占^卮博南");
string asciistring = ASCIIEncoding.ASCII.GetString(bytes);

获取输入字符串并给出 ASCII 字符串:$B=v<}RT;2(B^$B5nRRRONR(B=$B5Q@j(B^$BRHGnFn(B

具有我可以正确使用的所有适当的转义序列。

(实际的第一个转义字符不显示在这里,但序列的其余部分在粘贴时显示)

如果我将此代码与来自 ISR_IR 58 的字符一起使用:

Encoding enc = Encoding.GetEncoding("gb2312");
byte[] bytes = enc.GetBytes("ㄆㄉㄊㄋ^ㄌㄍㄐㄓ^ㄖㄠㄢㄤ");
string asciistring = ASCIIEncoding.ASCII.GetString(bytes);

我只得到字符串:????????^????????^????????

那么使用 .Net 的 DICOM ISO_IR 58 编码的答案是什么?我是否使用了错误的字符串进行编码? .Net 不支持 DICOM 中的 ISO_IR 58 吗? .Net 中有错误吗?有可能吗?

最佳答案

ASCIIEncoding 是一种 7 位编码,任何 8 位编码都不能用它表示。因此,问号。

这应该适用于所有字符集:

Encoding enc = Encoding.GetEncoding("gb2312");
byte[] bytes = enc.GetBytes("ㄆㄉㄊㄋ^ㄌㄍㄐㄓ^ㄖㄠㄢㄤ");

Encoding asc = Encoding.GetEncoding("iso-8859-1");
string astr = asc.GetString(bytes);

输出

A8 C6 A8 C9 A8 CA A8 CB 5E A8 CC A8 CD A8 D0 A8 D3 5E A8 D6 A8 E0 A8 E2 A8 E4 
¨Æ¨É¨Ê¨Ë^¨Ì¨Í¨Ð¨Ó^¨Ö¨à¨â¨ä

关于c# - .Net 4.0 中的 ISO_IR 58 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32640528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com