Symptom
JSONLoader().load(SourceContent("data.json")) renders {"name": "café", "city": "München"} with \uXXXX escapes for é and ü. The file itself stores the characters; only the rendered document text is escaped.
Evidence what you'll see
- The loader calls
json.dumpswith the defaultensure_ascii=TrueinJSONLoader._parse_json. - The same escaping applies to top-level lists and scalars, which also go through
json.dumps. - This is a different failure from the UTF-8 BOM parse error on the same loader.
Why it happens
Three json.dumps calls in crewai_tools/rag/loaders/json_loader.py left ensure_ascii at its default, so characters outside ASCII became \uXXXX in the text that is embedded and retrieved. Pull request 8278 passes ensure_ascii=False on those three calls.
Affected versions
crewAI 1.15.28 and crewAI Tools 1.15.28, Ubuntu 24.04, Python 3.13.
Fix steps
0 of 2 done
Your check marks stay in this browser only.
How to check it worked
- Loading
{"name": "café", "city": "München"}prints those characters inresult.content, not\u00e9or\u00fc.
If it still fails
- No published release tag contains pull request 8278. Tag
1.15.28was compared against merge2282ab658band does not contain it. - The UTF-8 BOM parse error is a separate change (pull request 8023). A file that still starts with a BOM can fail to parse before this rendering step runs.
Sources and credit
Summarized in our own words from these public reports. Credit goes to their authors.
Provided as is, without warranty. Try changes in a non-production environment and back up first. Security-related steps: verify against the official docs. Terms · Request removal or attribution change
Hit an error we don't cover? Submit it