pub enum SurrogatePolicy {
Reject,
ReplaceWithFFFD,
Skip,
}Expand description
Policy for handling unpaired UTF-16 surrogates in JSON input
JSON’s \uXXXX escapes use UTF-16 encoding. Characters outside the
Basic Multilingual Plane (U+10000+, including emoji) require surrogate
pairs: a high surrogate (0xD800-0xDBFF) followed immediately by a low
surrogate (0xDC00-0xDFFF).
Some systems (e.g., JavaScript with truncated strings, legacy databases) may emit unpaired surrogates, which are technically invalid Unicode but may appear in real-world data.
§Example
use hedl_json::{FromJsonConfig, SurrogatePolicy};
// Default: reject unpaired surrogates
let strict = FromJsonConfig::default();
// Replace unpaired surrogates with U+FFFD
let lenient = FromJsonConfig::builder()
.surrogate_policy(SurrogatePolicy::ReplaceWithFFFD)
.build();
// Skip (remove) unpaired surrogates entirely
let skip = FromJsonConfig::builder()
.surrogate_policy(SurrogatePolicy::Skip)
.build();Variants§
Reject
Reject unpaired surrogates with an error (default, strict)
This is the safest option and ensures all processed JSON contains valid Unicode. Use this for data integrity requirements.
ReplaceWithFFFD
Replace unpaired surrogates with U+FFFD (replacement character)
This allows processing of JSON with invalid Unicode while preserving string structure. The replacement character (�) signals data loss.
Skip
Skip (remove) unpaired surrogates silently
Use with caution: this modifies string content without indication. Suitable when the surrogates are known to be noise or artifacts.
Trait Implementations§
Source§impl Clone for SurrogatePolicy
impl Clone for SurrogatePolicy
Source§fn clone(&self) -> SurrogatePolicy
fn clone(&self) -> SurrogatePolicy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more