Zig
Zig
StringBuilder Encode Charset
Demonstrates the importance of the charset argument when encoding/decoding.Chilkat Zig Downloads
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")});
}