diff --git a/src/pantry.rs b/src/pantry.rs index 4263273..189cc38 100644 --- a/src/pantry.rs +++ b/src/pantry.rs @@ -88,7 +88,12 @@ fn write_pantry_item(output: &mut String, item: &cooklang::pantry::PantryItem) { } fn toml_escape_key(key: &str) -> String { - if key.contains(' ') || key.contains('.') || key.contains('[') || key.contains(']') { + if key.contains(' ') + || key.contains('.') + || key.contains('[') + || key.contains(']') + || !key.is_ascii() + { format!("\"{}\"", key.replace('"', "\\\"")) } else { key.to_string() diff --git a/src/server/handlers/pantry.rs b/src/server/handlers/pantry.rs index 0fc7313..42c8165 100644 --- a/src/server/handlers/pantry.rs +++ b/src/server/handlers/pantry.rs @@ -442,7 +442,12 @@ fn write_pantry_item(output: &mut String, item: &cooklang::pantry::PantryItem) { fn toml_escape_key(key: &str) -> String { // If the key contains special characters or spaces, quote it - if key.contains(' ') || key.contains('.') || key.contains('[') || key.contains(']') { + if key.contains(' ') + || key.contains('.') + || key.contains('[') + || key.contains(']') + || !key.is_ascii() + { format!("\"{}\"", key.replace('"', "\\\"")) } else { key.to_string()