You can partly achieve this for double quoted strings with the raw string call syntax: import unicode template u(s: string): seq[Rune] = toRunes(s) echo u"abcd" Run
I don't think you can do the same with single quoted strings, however you can define a very simple macro that turns it into a character literal. import unicode, macros macro uc(s: string{lit}): untyped = result = newCall(bindSym("Rune"), newLit(s.strVal[0])) echo uc"a" Run If you want your character literal to be able to be more than 1 ASCII character you can use compile time evaluation: import unicode, macros macro uc(s: string{lit}): untyped = result = newCall(bindSym("Rune"), newLit(runeAt(s.strVal, 0).int16)) echo uc"漢" Run