JSON

How to resolve invalid characters in JSON strings and how I fixed them.

📅 December 14, 2025 ⏱️ 4 min read 👁️ 589 views 🏷️ JSON

Invalid character errors in JSON usually appear when special characters are not escaped correctly or when encoding issues corrupt the data. I have encountered these errors many times while handling API responses, saving user generated content, and processing text heavy configuration files. In most cases, the JSON looked normal until the parser rejected it. This guide explains why these errors happen and how I learned to fix them in real projects.

JSON is simple on the surface, but strings inside JSON follow strict rules defined by the official specification RFC 8259. Any violation of these rules results in an invalid character error.

Understanding JSON String Rules

JSON strings must follow very specific formatting rules. When I first started working with JSON, most of my invalid character errors came from ignoring or forgetting these requirements.


JSON strings must:
Be wrapped in double quotes
Escape special characters using backslash
Use Unicode escapes for control characters

If even one character breaks these rules, the entire JSON document becomes invalid.

Characters That Must Be Escaped

These characters cannot appear directly inside JSON strings. I learned this the hard way while logging user input and file paths.


"   Double quote
\   Backslash
/   Forward slash
\b  Backspace
\f  Form feed
\n  Newline
\r  Carriage return
\t  Tab
\uXXXX Unicode character

Many editors hide these characters visually, which makes the error difficult to spot without validation.

Common Invalid Character Errors I Encountered

Unescaped Quotes

This error appeared frequently when storing messages or user comments that included quotation marks.


{"message": "He said "hello""}

{"message": "He said \"hello\""}

Once I switched to generating JSON programmatically instead of writing strings manually, this issue disappeared.

Unescaped Backslashes

File paths were a major source of invalid character errors for me, especially on Windows systems.


{"path": "C:\Users\name"}

{"path": "C:\\Users\\name"}

The parser interpreted the backslash as the start of an escape sequence, which caused the error.

Raw Newlines Inside Strings

I encountered this problem while saving multi line text directly into JSON without escaping line breaks.


{"text": "Line 1
Line 2"}

{"text": "Line 1\nLine 2"}

Escaping newlines correctly resolved repeated failures during data submission.

Control Characters

Tabs and other invisible characters caused subtle bugs, especially when copying text from spreadsheets or editors.


{"text": "Hello	World"}

{"text": "Hello\tWorld"}

The error message did not always clearly indicate where the problem was, which made validation essential.

Non UTF 8 Encoded Characters

Encoding issues were one of the hardest problems to diagnose. I faced this when processing files saved with different encodings.


b'{"name": "Café"}'

'{"name": "Cafe"}'
'{"name": "Caf\u00e9"}'

Ensuring UTF 8 encoding across the entire pipeline eliminated these errors completely.

How I Fix Invalid Characters

Whenever I suspect invalid characters, I validate the JSON immediately. I paste the data into https://jsonformatterspro.com to locate the exact position where parsing fails. This step alone has saved me hours of debugging.

JavaScript Handling

I stopped escaping strings manually and relied on built in methods instead.


function escapeJsonString(str) {
  return str
    .replace(/\\/g, "\\\\")
    .replace(/"/g, "\\\"")
    .replace(/\n/g, "\\n")
    .replace(/\r/g, "\\r")
    .replace(/\t/g, "\\t");
}

const obj = { message: 'He said "hello"' };
const json = JSON.stringify(obj);

Using JSON.stringify prevented nearly all string related errors in my frontend code.

Python Handling

On the backend, I relied on Python libraries to handle escaping and encoding correctly.


import json

data = {"message": 'He said "hello"'}
json_str = json.dumps(data)

with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)

Explicitly specifying UTF 8 encoding avoided inconsistent behavior across environments.

Fixing Encoding Issues

When dealing with legacy systems, I occasionally had to normalize encoding before parsing.


def fix_encoding(byte_string):
    for encoding in ["utf-8", "latin-1", "cp1252"]:
        try:
            return byte_string.decode(encoding)
        except UnicodeDecodeError:
            continue
    return byte_string.decode("utf-8", errors="ignore")

Prevention Practices That Worked for Me

  • Generate JSON using standard libraries instead of manual strings
  • Ensure all files are saved with UTF 8 encoding
  • Validate JSON before storing or transmitting
  • Avoid copying raw text directly into JSON

Since following these practices, invalid character errors have become rare and much easier to fix.

Key Takeaways

  • Invalid character errors usually involve escaping or encoding issues
  • Quotes, backslashes, and newlines must be escaped properly
  • UTF 8 encoding is critical for reliable JSON parsing
  • Validation tools remove guesswork from debugging

Whenever invalid character errors appear now, validation is my first step. Using JSON Formatters Pro has made identifying problematic characters fast and reliable, even in large and complex JSON files.

🏷️ Tags:
json invalid character json escape json encoding special characters json

📚 Related Articles