f2d3014a3cc95116346eab4675817cf0c65f6d62
braney
  Tue Aug 18 11:12:35 2026 -0700
hgc: encode item detail text consistently, refs #38123

diff --git src/hg/hgc/bigBedClick.c src/hg/hgc/bigBedClick.c
index e3e8914835b..581afb8d859 100644
--- src/hg/hgc/bigBedClick.c
+++ src/hg/hgc/bigBedClick.c
@@ -282,32 +282,33 @@
 
     // skip an optional '#' on the first field name
     if (i == 0 && startsWith("#", name))
         name = skipBeyondDelimit(name, '#');
 
     if (startsWith("_", name) && !(startsWith("_json", name)) && !(startsWith("json", name)))
         detailsTabPrintSpecial(name, val, extraFields);
     else if (slNameInList(tblFieldNames, name))
         {
         userTbl = (struct embeddedTbl *)hashFindVal(fieldsToEmbeddedTbl, name);
         userTbl->encodedTbl = val;
         printEmbeddedTable(tdb, userTbl, tableLabelsDy);
         }
     else
         {
-        printFieldLabelWithId(name, name);
-        printf("<td>%s</td></tr>\n", val);
+        // the field name and value come from the hub's bigBed when this is a hub track
+        printFieldLabelWithId(hubEncode(tdb, name), hubEncode(tdb, name));
+        printf("<td>%s</td></tr>\n", hubEncode(tdb, val));
         }
     printCount++;
     }
 printf("</table>\n");
 dyStringPrintf(tableLabelsDy, "];\n");
 jsInline(dyStringCannibalize(&tableLabelsDy));
 return printCount;
 }
 
 struct slPair *parseDetailsTablUrls(struct trackDb *tdb)
 /* Parse detailsUrls setting string into an slPair list of {offset column name, fileOrUrl} */
 {
 char *detailsUrlsStr = trackDbSetting(tdb, "detailsUrls");
 if (!detailsUrlsStr)
     detailsUrlsStr = trackDbSetting(tdb, "detailsTabUrls");