Table of Contents

DIUnicode: Version History

DIUnicode provides Unicode text reader and writer classes with automatic conversion from and to 144 character sets and encodings for Delphi (Embarcadero, CodeGear, Borland).

DIUnicode v7.3.0 – 22 Nov 2023

DIUnicode 7.2.0 – 16 Sept 2021

DIUnicode 7.1.0 – 5 Jun 2020

DIUnicode 7.0.0 – 8 Oct 2019

Extend character support to the full range of Unicode Code Points from $000000 to $10FFFF.

Up to now, DIUnicode stored code points as WideChars. This limited Unicode support to the Basic Multilingual Plane (BMP) from $0000 to $FFFF. Code points from the Supplementary Planes were converted to the $FFFD replacement character. This went well with a great number of languages. But less common scripts did not work, just like the increasingly popular emojis from the Symbols and Pictographs Unicode blocks.

DIUnicode 7.0.0 overcomes these limitations and now covers the complete Unicode range. Changes are almost entirely internal and maintain backwards compatibility as much as possible. Existing applications should compile with no or minor changes only. WideChar routines are marked as deprecated and hint at their new complementary UCP routines.

TDIUnicodeReader.Data is still a WideChar buffer. However, its contents is now fully UTF-16 encoded. This means that it may contain code points > $FFFF which take up two WideChars (surrogate pairs). As a result, indexed access to the buffer is no longer guaranteed. TDIUnicodeReader.Data related methods, like TDIUnicodeReader.DataAsStrTrimW are adjusted accordingly.

UnicodeString utility routines are rewritten to handle full UTF-16, including surrogate pairs. Most of them are in DIUtils.pas. YuUtf.pas also contains new utility routines for UTF-16 testing, encoding, and decoding. If possible, string handling routines now take NativeInt type parameters for the buffer length.

Other noteworthy changes:

DIUnicode 6.10.0 – 7 Mar 2019

DIUnicode 6.9.0 – 24 Dec 2018

DIUnicode 6.8.0 – 3 Apr 2017

DIUnicode 6.7.0 – 7 May 2016

DIUnicode 6.6.2 – 15 Sep 2015

DIUnicode 6.6.1 – 25 Apr 2015

DIUnicode 6.6.0 – 3 Oct 2014

DIUnicode 6.5.0 – 28 Apr 2014

DIUnicode 6.0.1 – 17 Feb 2014

DIUnicode 6.0.0 – 25 Sep 2013

DIUnicode 5.6.0 – 14 Jun 2013

DIUnicode 5.5.0 – 4 Oct 2012

DIUnicode 5.2.0 – 14 Apr 2012

DIUnicode 5.1.0 – 9 Nov 2011

DIUnicode 5.0.0 – 15 Oct 2011

DIUnicode 4.2.1 – 20 Feb 2011

DIUnicode 4.2.0 – 28 Sep 2010

DIUnicode 4.1.1 – 17 Dec 2009

DIUnicode 4.1.0 – 14 Sep 2009

DIUnicode 4.0.1 – 31 Jan 2009

DIUnicode 4.0.0 – 24 Nov 2008

DIUnicode 3.2.1 – 30 Jul 2008

DIUnicode 3.2 – 13 May 2007

DIUnicode 3.1 – 28 Dec 2005

DIUnicode 3.0.1 – 14 Oct 2005

DIUnicode 3.0 – 14 Apr 2005

DIUnicode 2.00 – 2. February 2004

DIUnicode 1.50 – 13. December 2003

DIUnicode 1.00 – 5. May 2003