Skip to content

Deserializing error with UTF-8 BOM (Byte Order Mark) Content #1115

Open
@zenoxs

Description

Deserializing Panic with UTF-8 BOM (Byte Order Mark) Content

I encounter an issue when attempting to deserialize a string encoded in UTF-8 with a Byte Order Mark (BOM). The deserializer throws the following error: Error("expected value", line: 1, column: 1).

How to Reproduce

To reproduce the issue, encode a JSON file in UTF-8 with BOM and use from_reader or from_str for deserialization.

Workaround

As a temporary workaround, I check if the file content begins with the first three bytes of the BOM and remove them if present:

use std::fs;

fn main() {
    // Specify the path to your file
    let file_path = "path/to/your/file_with_bom.json";

    // Read the file to a Vec<u8>
    let mut data = fs::read(file_path).unwrap();

    // UTF-8 BOM is three bytes: EF BB BF
    if data.starts_with(&[0xEF, 0xBB, 0xBF]) {
        // Remove the first three bytes (the BOM)
        data = data[3..].to_vec();
    }

    // Proceed with deserialization...
}

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions