As defined in RFC 2253 section 2.4:
(
http://www.ietf.org/rfc/rfc2253.txt)
..
If the UTF-8 string does not have any of the following characters
which need escaping, then that string can be used as the string
representation of the value.
- a space or "#" character occurring at the beginning of the
string
- a space character occurring at the end of the string
- one of the characters ",", "+", """, "\", "<", ">" or ";"
...
A string can lead with '\ ' and trail with '\ '. Both cases are not supported by the DnParser and cause a parsing error. Furthermore, if a string starts with '\ ' only the spaces leading up to the escape should be trimmed. In addition only the spaces after '\ ' when at the end of a value should be stripped.
looking at the valuelexer.g file '\#' will work anywhere in the string, but should really only be supported at the head of the string.
If I understand the RFC correctly then these string should be supported:
"\ four spaces leading and 3 trailing \ " -> "\ four spaces leading and 3 trailing \ "
" \ two leading three trailing \ " -> "\ two leading three trailing \ "
"\# a leading pound" -> "\# a pound"
"a middle # pound" -> "a middle # pound"
"a trailing pound #" -> "a trailing pound #"
These are not valid:
"middle\ spaces"
"# a leading pound"
"a middle \# pound"
"a trailing pound \#"
Unless the next line in the RFC is really true, "Implementations MAY escape other characters." This makes things a bit more hairy I think.