[ https://issues.apache.org/jira/browse/VELTOOLS-184?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17636048#comment-17636048 ]
Maurice Perry edited comment on VELTOOLS-184 at 11/18/22 9:56 PM: ------------------------------------------------------------------ You misread the RFC: any character can be escaped using a UNICODE hexadecimal number, but only some can be directly escaped by preceding them with a backslash: {{{}string = quotation-mark *char quotation-mark{}}}{{{}char = unescaped /{}}} {{escape (}} {{%x22 / ; " quotation mark U+0022}} {{%x5C / ; \ reverse solidus U+005C}} {{%x2F / ; / solidus U+002F}} {{%x62 / ; b backspace U+0008}} {{%x66 / ; f form feed U+000C}} {{%x6E / ; n line feed U+000A}} {{%x72 / ; r carriage return U+000D}} {{%x74 / ; t tab U+0009}} {{{}%x75 4HEXDIG ) ; uXXXX U+XXXX{}}}{{{}escape = %x5C ; \{}}}{{{}quotation-mark = %x22 ; "{}}}{{{}unescaped = %x20-21 / %x23-5B / %x5D-10FFFF{}}} The single quote is NOT one of them. was (Author: robbyn): You misread the RFC: any character can be escaped using a UNICODE hexadecimal number, but only some can be directly escaped by preceding them with a backslash: string = quotation-mark *char quotation-mark char = unescaped / escape ( %x22 / ; " quotation mark U+0022 %x5C / ; \ reverse solidus U+005C %x2F / ; / solidus U+002F %x62 / ; b backspace U+0008 %x66 / ; f form feed U+000C %x6E / ; n line feed U+000A %x72 / ; r carriage return U+000D %x74 / ; t tab U+0009 %x75 4HEXDIG ) ; uXXXX U+XXXX escape = %x5C ; \ quotation-mark = %x22 ; " unescaped = %x20-21 / %x23-5B / %x5D-10FFFF > EscapeTool: add a json method, or a javascript method with a second parameter > ----------------------------------------------------------------------------- > > Key: VELTOOLS-184 > URL: https://issues.apache.org/jira/browse/VELTOOLS-184 > Project: Velocity Tools > Issue Type: Improvement > Components: GenericTools > Affects Versions: 2.x > Environment: any > Reporter: Maurice Perry > Priority: Minor > Labels: EscapeTool, escape, javascript, json > > The string returned by EscapeTool.javascript() method is not alway compliant > with the JSON syntax. For instance, when the input string contains an > apostrophe ', a backslash is inserted before it because there is no way for > the method to know if the string is enclosed with single or double quotes. > This is not compliant with the JSON syntax, and some JSON parsers will reject > the string. > There may be other differences between javascript and JSON strings, but this > is the one I encountered, and I had to use a workaround. > This issue can be solved either with a JSON method, or with a second > javascript method with a second parameter indicating the type of quote used. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org For additional commands, e-mail: dev-h...@velocity.apache.org