作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
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/
DICOM 中有一个名为 ISO_IR 58 的双字节字符集。据我所知,.Net 中的等效编码是 gb2312。我正在尝试将 ISO_IR 58 个字符编码为 7 位 ASCII 以用于医疗系统之间的
我是一名优秀的程序员,十分优秀!