Атрибут data
ожидает, что значение будет URI. Таким образом, вы должны предоставить значение, которое является синтаксически допустимым URI.
Текущая спецификация URI: RFC 3986 . Чтобы понять, нужно ли кодировать ,
в пути URI, взгляните, как определено производственное правило path :
path = path-abempty ; begins with "/" or is empty
/ path-absolute ; begins with "/" but not "//"
/ path-noscheme ; begins with a non-colon segment
/ path-rootless ; begins with a segment
/ path-empty ; zero characters
Поскольку у нас есть URI с полномочиями информацией, нам нужно взглянуть на path-abempty (см. URI производственное правило ):
path-abempty = *( "/" segment )
сегмент - ноль или более pchar символов, которые определены следующим образом (я уже расширил правила производства):
pchar = ALPHA / DIGIT / "-" / "." / "_" / "~" / "%" HEXDIG HEXDIG / "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" / ":" / "@"
И, как вы можете видеть, pchar расширяется до буквального ,
. Поэтому вам не нужно кодировать ,
в компоненте path . Но так как вам разрешено кодировать любой символ без разделителя, используя кодировку процентов без изменения его значения, то лучше использовать %2C
вместо ,
.