Consider the following setup, based on this answer by WReach:
eval = (ToString[#] &) CellPrint[ Cell[TextData["őúű"], "Program", Evaluatable -> True, CellGroupingRules -> "InputGrouping", CellEvaluationFunction -> eval]]
This will create a cell that, when evaluated, will simply output its own contents, converted to a string. My goal is to preserve non-ASCII characters during this conversion.
Notice that with the example contents I included, I get this string as output
This is not the same as the input,
"őúű". The difference is not just in display, it's actually a different string as you can verify using
StringLength or exporting the string to a file. What I need to get is:
i.e. a string of length 3.
How can I get this?
EDIT: Inspecting the cell expression shows that it does indeed contain the 39-character string
"\[ODoubleAcute]\[UAcute]\[UDoubleAcute]". So the key to the solution may be figuring out how to convert this to a unicode string containing those characters.
EDIT 2: I found the following way to convert named characters in a string
str to actual unicode characters. But this is undocumented, I don't know where it may go wrong, and I'm sure there must be something better ...