Widestrings (used to represent unicode character strings) are implemented in much the same way as ansistrings: reference counted, null-terminated arrays, only they are implemented as arrays of WideChars instead of regular Chars. A WideChar is a two-byte character (an element of a DBCS: Double Byte Character Set). Mostly the same rules apply for WideStrings as for AnsiStrings. The compiler transparantly converts WideStrings to AnsiStrings and vice versa.
Similarly to the typecast of an Ansistring to a PChar null-terminated array of characters, a WideString can be converted to a PWideChar null-terminated array of characters. Note that the PWideChar array is terminated by 2 null bytes instead of 1, so a typecast to a pchar is not automatic.
The compiler itself provides no support for any conversion from Unicode to ansistrings or vice versa; 2 procedural variables are present in the system unit which can be set to handle the conversion. For more information, see the system units reference.