In the Documentation we read (emphasis is mine):
By default, the Wolfram System uses the character encoding
"PrintableASCII"when saving notebooks and packages. This means that when special characters are written out to files or external programs, they are represented purely as sequences of ordinary characters. This uniform representation is crucial in allowing special characters in the Wolfram Language to be used in a way that does not depend on the details of particular computer systems.When creating packages and notebooks, special characters are always written out using full names.
ExportString["Lamé \[LongRightArrow] αβ+", "Package"]"(* Created by Wolfram Mathematica 10.0 : www.wolfram.com *) \"Lam\\[EAcute] \\[LongRightArrow] \\[Alpha]\\[Beta]+\" "In
InputForm, all special characters are written out fully when using"PrintableASCII".ToString["Lamé \[LongRightArrow] αβ+", InputForm, CharacterEncoding -> "PrintableASCII"]"\"Lam\\[EAcute] \\[LongRightArrow] \\[Alpha]\\[Beta]+\""
In the above-cited examples the character é is converted into the corresponding Mathematica's platform-independent representation \[EAcute]. This is expected since this character isn't PrintableASCIIQ:
PrintableASCIIQ@"é"
ToCharacterCode@"é"
ToCharacterCode["é", "ASCII"]
False{233}
None
Hence I expect that Exporting this character with CharacterEncoding -> "PrintableASCII" will also give me \[EAcute]:
Export["test1.txt", "é", "Text",
CharacterEncoding -> "PrintableASCII"] // SystemOpen
Export["test2.txt", "é", "String",
CharacterEncoding -> "PrintableASCII"] // SystemOpen
The first input produces a file containing e', the second – a file with é.
Is this behavior correct? How can I export strings using only "PrintableASCII" and writing all the special characters in their FullForm as it happens when I Export as "Package"?
Further considerations
Wrapping the string by InputForm doesn't work:
Export["test3.txt", InputForm@"é", "String",
CharacterEncoding -> "PrintableASCII"] // SystemOpen
produces a file containing "é" literally. It is worth to note that for ExportString wrapping by InputForm works:
ExportString[InputForm@"é", "String", CharacterEncoding -> "PrintableASCII"]
"\"\\[EAcute]\""
Wrapping by FullForm works but is unacceptable due to the quotation marks added:
Export["test4.txt", FullForm@"é", "String",
CharacterEncoding -> "PrintableASCII"] // SystemOpen
produces a file containing "\[EAcute]" literally.
Exporting as "Package" doesn't serve as a workaround because of the header added and also because strings are exported with the quotation marks.
The same happens with CharacterEncoding -> None.
\[CirclePlus]gets converted into(+). This may not be the most useful behavior, but again, this is not the intended use case, so I won't lose any sleep over it. – Itai Seggev Jul 09 '17 at 23:34