Your suggestion looks promising, but I do not know in advance what the hex codes will be. The string comes from a language translation table, so the hex could any of the hex codes for characters not on a standard UK English keyboard. Initially just Spanish language, but later many more languages.
I reckon the MapSubString() you suggested is going to be useful.
But also i have found this using my friend Google:
=chr(Num#('3F', '(HEX)')) which from hex 3F returns it printable character ?
Now I just need to somehow mash this up into something workable. [Maybe some cunning dollar expansion?]
Best Regards, Bill
If your encoding is UTF-8, you should be able to automatically load all the mappings using:
'%' & Num(RowNo() + 31, '(HEX)') As Code,
Chr(RowNo() + 31) As Value
AutoGenerate 256 - 32;
So that will have all the printable values up to %FF (0 - 31 are not printable)
There is no Hex conversion that I know of but it could easily be created manually (as it never changes).
I would create a Hex conversion table and use the table in an ApplyMap for the lookup of the character sets.
In order to parse the field into its constituent parts, I would use Substringcount to get the number of "%"s and perform a loop through the "%" using subfield to extract the Nth part of the array.
I hope this helps and sorry I do not have time to work it fully through