Enum HanXinEncodeMode

Enum HanXinEncodeMode

Namespace: Aspose.BarCode.Generation
Assembly: Aspose.BarCode.dll (25.1.0)

汉信码编码模式。建议使用自动模式与 ASCII / 中文字符或 Unicode 字符。

public enum HanXinEncodeMode

字段

Auto = 0

在自动模式下,CodeText 以最大数据紧凑性进行编码。 Unicode 字符使用 GB18030 编码,根据汉信条形码规范进行编码。

Binary = 1

在二进制模式下,CodeText 以最大数据紧凑性进行编码。 如果发现 Unicode 字符,则会抛出异常。

ECI = 2

在 ECI 模式下,整个消息在指定的 ECIEncoding 编码中重新编码,并插入 ECI 标识符。 如果发现不受所选 ECI 编码支持的字符,则会抛出异常。 请注意,一些旧的(2006 年之前)扫描仪可能不支持此模式。

Extended = 5

扩展模式允许内部模式的组合:自动、二进制、文本、数字、URI、Unicode、ECI、普通中国区域一、 普通中国区域二、GB18030 两字节、GB18030 四字节。 Codetext 可以手动构建,使用前缀和双反斜杠,例如:@"\auto:abc\000009:ΑΒΓΔΕ\auto:ab\c" 或使用 HanXinExtCodetextBuilder。 如果 codetext 包含 ECI 片段,则在 ECI 片段之后,该 codetext 中只能包含以下模式: 自动、二进制、文本、数字、URI、ECI。

URI = 4

URI 模式表示在汉信码中表示的数据是统一资源标识符 (URI), 参考 RFC 3986。

Unicode = 3

Unicode 模式设计了一种表示任何文本数据的方式,参考 UTF8 编码/字符集在汉信码中。

示例

// 自动模式
var codetext = "1234567890ABCDEFGabcdefg,汉信码";
using (var generator = new BarcodeGenerator(EncodeTypes.HanXin, codetext))
{
    generator.Save("test.bmp");
}

// 二进制模式
byte[] encodedArr = { 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9 };
using (var generator = new BarcodeGenerator(EncodeTypes.HanXin))
{
    generator.SetCodetext(encodedArr);
    generator.Parameters.Barcode.HanXin.HanXinEncodeMode = HanXinEncodeMode.Binary;
    generator.Save("test.bmp");
}

// ECI 模式
var codetext = "ΑΒΓΔΕ";
using (var generator = new BarcodeGenerator(EncodeTypes.HanXin, codetext))
{
    generator.Parameters.Barcode.HanXin.HanXinEncodeMode = HanXinEncodeMode.ECI;
    generator.Parameters.Barcode.HanXin.HanXinECIEncoding = ECIEncodings.ISO_8859_7;
    generator.Save("test.bmp");
}

// Unicode 模式
var codetext = "abcd АБВ ıntəˈnæʃənəl テスト 안녕하세요 테스트 테스트";
using (var generator = new BarcodeGenerator(EncodeTypes.HanXin, codetext))
{
    generator.Parameters.Barcode.HanXin.HanXinEncodeMode = HanXinEncodeMode.Unicode;
    generator.Save("test.bmp");
}

// URI 模式
var codetext = "https://www.test.com/%BC%DE%%%ab/search=test";
using (var generator = new BarcodeGenerator(EncodeTypes.HanXin, codetext))
{
    generator.Parameters.Barcode.HanXin.HanXinEncodeMode = HanXinEncodeMode.URI;
    generator.Save("test.bmp");
}

// 扩展模式
var str = @"\gb180302b:漄\gb180304b:㐁\region1:全\region2:螅\numeric:123\text:qwe\unicode:ıntəˈnæʃənəl" +
    @"\000009:ΑΒΓΔΕ\auto:abc\binary:abc\uri:backslashes_should_be_doubled\\000555:test";

var expectedStr = @"漄㐁全螅123qweıntəˈnæʃənəlΑΒΓΔΕabcabcbackslashes_should_be_doubled\000555:test";

using (var generator = new BarcodeGenerator(EncodeTypes.HanXin, str))
{
    generator.Parameters.Barcode.HanXin.HanXinEncodeMode = HanXinEncodeMode.Extended;
    generator.Save("test.bmp");
}

// 使用 HanXinExtCodetextBuilder 进行扩展模式(与前一个示例中的 codetext 相同)
// 创建 codetext
var codeTextBuilder = new HanXinExtCodetextBuilder();
codeTextBuilder.AddGB18030TwoByte("漄");
codeTextBuilder.AddGB18030FourByte("㐁");
codeTextBuilder.AddCommonChineseRegionOne("全");
codeTextBuilder.AddCommonChineseRegionTwo("螅");
codeTextBuilder.AddNumeric("123");
codeTextBuilder.AddText("qwe");
codeTextBuilder.AddUnicode("ıntəˈnæʃənəl");
codeTextBuilder.AddECI("ΑΒΓΔΕ", 9);
codeTextBuilder.AddAuto("abc");
codeTextBuilder.AddBinary("abc");
codeTextBuilder.AddURI(@"backslashes_should_be_doubled\000555:test");

var expectedStr = @"漄㐁全螅123qweıntəˈnæʃənəlΑΒΓΔΕabcabcbackslashes_should_be_doubled\000555:test";

// 生成 codetext
var str = codeTextBuilder.GetExtendedCodetext();

// 生成
using (var generator = new BarcodeGenerator(EncodeTypes.HanXin, str))
{
    generator.Parameters.Barcode.HanXin.HanXinEncodeMode = HanXinEncodeMode.Extended;
    generator.Save("test.bmp");
}
 中文