Sample code for 30+ languages & platforms
Zig

StringBuilder Encode Charset

Demonstrates the importance of the charset argument when encoding/decoding.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    const s = "é é é";

    const sb = try chilkat.StringBuilder.init();
    defer sb.deinit();

    sb.append(s) catch {};
    sb.entityDecode() catch {};

    // The string now contains: "é é é"
    std.debug.print("{s}\n", .{try sb.getAsString(alloc)});

    // If encoded to hex using the iso-8859-1 charset,
    // each é char is represented in 1 byte.
    // Output: E920E920E9
    std.debug.print("{s}\n", .{try sb.getEncoded(alloc, "hex", "iso-8859-1")});

    // If encoded to hex using the utf-8 charset,
    // each é char is represented in 2 bytes.
    // Output: C3A920C3A920C3A9
    std.debug.print("{s}\n", .{try sb.getEncoded(alloc, "hex", "utf-8")});

    // Here's utf-16
    // Output: E9002000E9002000E900
    std.debug.print("{s}\n", .{try sb.getEncoded(alloc, "hex", "utf-16")});

    // utf-32
    // Output: E900000020000000E900000020000000E9000000
    std.debug.print("{s}\n", .{try sb.getEncoded(alloc, "hex", "utf-32")});
}