在JavaScript

时间:2017-11-13 18:14:29

标签: javascript character-encoding

在我的项目中,我使用的是第三方库,它读取DICOM文件并显示一些数据。当使用西里尔符号读取属性时,我将字符串作为输出。通过使用编码/解码工具,我确定西里尔符号用ISO-8859-5编码,然后显示为ISO-8859-1。

enter image description here

所以我的具体问题是:有一个带有值的字符串变量:

  

A°ÀÁμ¼±°μ²°

如何将其转换为:

  

САРСЕМБАЕВА

使用JavaScript?

2 个答案:

答案 0 :(得分:0)

这是library,可以解决以下问题:

var repairedString 
        = cptable.utils.decode(28595, brokenString);

答案 1 :(得分:0)

您应该阅读DICOM标签0008,0005的内容。

此标记将告诉您在编码患者姓名和其他可能需要字符集转换的字符串时使用了哪些字符集(DICOM standard part 5中的完整说明)

然后,您必须将该标记的值映射到操作系统中使用的字符集名称。

Imebra DICOM Library的这段代码中,您可以推断出如何将DICOM字符集名称映射到ICONV(例如在Linux和OS-X上)和Windows字符集:

registerCharset("ISO_IR 6", "", "ISO-IR-6", "US-ASCII", 1252, false);
registerCharset("ISO_IR 100", "", "ISO-IR-100", "ISO-8859-1", 1252, false);
registerCharset("ISO_IR 101", "", "ISO-IR-101", "ISO-8859-2", 28592, false);
registerCharset("ISO_IR 109", "", "ISO-IR-109", "ISO-8859-3", 28593, false);
registerCharset("ISO_IR 110", "", "ISO-IR-110", "ISO-8859-4", 28594, false);
registerCharset("ISO_IR 144", "", "ISO-IR-144", "ISO-8859-5", 28595, false);
registerCharset("ISO_IR 127", "", "ISO-IR-127", "ISO-8859-6", 28596, false);
registerCharset("ISO_IR 126", "", "ISO-IR-126", "ISO-8859-7", 28597, false);
registerCharset("ISO_IR 138", "", "ISO-IR-138", "ISO-8859-8", 28598, false);
registerCharset("ISO_IR 148", "", "ISO-IR-148", "ISO-8859-9", 28599, false);
registerCharset("ISO_IR 149", "", "ISO-IR-149", "EUC-KR", 949, false);
registerCharset("ISO_IR 13",  "", "ISO-IR-13", "EUC_JP", 50930, false);
registerCharset("ISO_IR 14",  "", "ISO-IR-14", "EUC-JP", 932, false );
registerCharset("ISO_IR 166", "", "ISO-IR-166", "TIS-620", 874, false);
registerCharset("ISO_IR 87",  "", "ISO-IR-87", "EUC-JP", 20932, false);
registerCharset("ISO_IR 159", "", "ISO-IR-159", "JIS_X0212-1990", 20932, false);

registerCharset("ISO 2022 IR 6",   "\x1b\x28\x42", "ISO-IR-6", "US-ASCII", 1252, false);
registerCharset("ISO 2022 IR 100", "\x1b\x2d\x41", "ISO-IR-100", "ISO-8859-1", 1252, false);
registerCharset("ISO 2022 IR 101", "\x1b\x2d\x42", "ISO-IR-101", "ISO-8859-2", 28592, false);
registerCharset("ISO 2022 IR 109", "\x1b\x2d\x43", "ISO-IR-109", "ISO-8859-3", 28593, false);
registerCharset("ISO 2022 IR 110", "\x1b\x2d\x44", "ISO-IR-110", "ISO-8859-4", 28594, false);
registerCharset("ISO 2022 IR 144", "\x1b\x2d\x4c", "ISO-IR-144", "ISO-8859-5", 28595, false);
registerCharset("ISO 2022 IR 127", "\x1b\x2d\x47", "ISO-IR-127", "ISO-8859-6", 28596, false);
registerCharset("ISO 2022 IR 126", "\x1b\x2d\x46", "ISO-IR-126", "ISO-8859-7", 28597, false);
registerCharset("ISO 2022 IR 138", "\x1b\x2d\x48", "ISO-IR-138", "ISO-8859-8", 28598, false);
registerCharset("ISO 2022 IR 148", "\x1b\x2d\x4d", "ISO-IR-148", "ISO-8859-9", 28599, false);
registerCharset("ISO 2022 IR 149", "\x1b\x24\x29\x43", "ISO-IR-149", "EUC-KR", 949, false);
registerCharset("ISO 2022 IR 13",  "\x1b\x29\x49", "ISO-IR-13", "EUC_JP", 50930, false);
registerCharset("ISO 2022 IR 14",  "\x1b\x28\x4a", "ISO-IR-14", "EUC-JP", 932, false);
registerCharset("ISO 2022 IR 166", "\x1b\x2d\x54", "ISO-IR-166", "TIS-620", 874, false);
registerCharset("ISO 2022 IR 87",  "\x1b\x24\x42", "ISO-IR-87", "EUC-JP", 20932, false);
registerCharset("ISO 2022 IR 159", "\x1b\x24\x28\x44", "ISO-IR-159", "JIS_X0212-1990", 20932, false);

registerCharset("ISO_IR 192", "", "UTF-8", "UTF-8", 65001, true);
registerCharset("GB18030",    "", "GB18030", "GB18030", 54936, true);