I too have encountered the same issue. One possible solution is to store the original string alongside the sortkey (perhaps separated by a known delimiter, or as a tuple) in the “encode” phase and fetch the original string in the “decode” phase. However, this adds the overhead of extra space.
Like you already mentioned, I was unable to find a reverse mapping from sortkey to original string. From a quick perusal of the code, it looks like the text package of GoLang uses CGo to call libicu, which in-turn doesn’t have the reverse mapping function.
Ideally, someone with collation/language expertise can advise us on what the best practices to be followed in this scenario are!