open Bytesrw (* Encoding detection example *) let () = Printf.printf "=== Encoding Detection ===\n\n"; (* Parse UTF-8 bytes with BOM *) let utf8_bom = Bytes.of_string "\xEF\xBB\xBFUTF-8 with BOM" in let result = Html5rw.parse_bytes utf8_bom in (match Html5rw.encoding result with | Some enc -> Printf.printf "Detected encoding: %s\n" (Html5rw.Encoding.encoding_to_string enc) | None -> Printf.printf "No encoding detected\n"); Printf.printf "Text: %s\n\n" (Html5rw.to_text result); (* Parse with meta charset *) let meta_charset = Bytes.of_string {| Encoding from meta tag |} in let result2 = Html5rw.parse_bytes meta_charset in (match Html5rw.encoding result2 with | Some enc -> Printf.printf "Detected encoding: %s\n" (Html5rw.Encoding.encoding_to_string enc) | None -> Printf.printf "No encoding detected\n"); Printf.printf "Text: %s\n\n" (Html5rw.to_text result2); (* Using low-level encoding functions *) Printf.printf "=== Low-level Encoding API ===\n\n"; let bytes = Bytes.of_string "\xEF\xBB\xBFHello" in (match Html5rw.Encoding.sniff_bom bytes with | Some (enc, offset) -> Printf.printf "BOM sniffing result: %s (skip %d bytes)\n" (Html5rw.Encoding.encoding_to_string enc) offset | None -> Printf.printf "No BOM detected\n"); let html_bytes = Bytes.of_string {||} in (match Html5rw.Encoding.prescan_for_meta_charset html_bytes with | Some enc -> Printf.printf "Prescan found: %s\n" (Html5rw.Encoding.encoding_to_string enc) | None -> Printf.printf "No charset in prescan\n")