USTRING — Unicode that feels like Clarion
Wide text end to end: declare it, type it, store it, browse it.
No new programming model. No special “Unicode mode.” If you already
know CSTRING, you already know USTRING —
and your existing ANSI apps stay byte-identical.
A few highlights for Clarion developers evaluating this build — then the full tester guide (declaration rules, import maps, backends, recipes, what to poke at).
Hands-off by design
Pick USTRING in the DCT, USE it on a control, PUT it to SQL.
No conversion buffers, no “wide mode” flag, no per-screen ceremony.
It just works the way Clarion always did.
All SQL backends speak Unicode
MSSQL, ODBC, PostgreSQL, and SQLite: USTRING(n) ↔ NVARCHAR(n-1)
(logical length round-trips). Keys, GET, SET/NEXT, and bound WHERE values
stay wide — never narrowed literals.
TopSpeed goes wide
Classic TPS is untouched. New driver: DRIVER('TopSpeedW'),
.tpsw files, USTRING fields + UNICODE blobs, keys that work,
and clean version rejects instead of silent mojibake.
A blob is a field
On SQL there is no MEMO(n) — long text is the blob.
TEXT,USE(blob) displays and edits;
IMAGE,USE(blob) displays. Window binding ships today;
Report is the same mental model (next surface).
Type your language — everywhere
Source (UTF-8 / UTF-16), Window/Report designers, DCT messages/tips, IME, emoji panel, clipboard. Captions and free-form ENTRY/TEXT/COMBO carry exact UTF-16 on any system codepage.
ANSI apps stay byte-identical
No USTRING? No wide designer text? Rebuild and ship — same binary
behavior as before. Opt-in tokens (e.g. PostgreSQL
UNICODECONNECT=1) never change default connects.
Import maps that tell the truth
Import Tables: nvarchar → USTRING, ntext /
nvarchar(max) → UNICODE memo/blob, binary max → BINARY blob —
attributes already ticked. Data Browser edits wide without narrowing.
Surrogate-safe editing
Emoji and non-BMP text edit as atomic characters on wide ENTRY/COMBO. Color emoji via DirectWrite where available; ordinary edits never leave half a pair behind.
Full tester guide — mental model, conversion rules, DCT import table, screen controls, blobs, SQL / SQLite / text drivers / TopSpeedW, recipes, and what to focus on when testing.
Open the full Unicode Tester GuideStandalone page (best full-width). Everything described there is implemented unless marked as a known limitation — different behavior is exactly what we want to hear about.