MD083 - Detect mojibake due to encoding issues¶
Aliases: mojibake
Disabled by default. This rule is opt-in: enable it explicitly with
extend-enable. There is no markdownlint equivalent; this is a rumdl-specific
structure rule.
What this rule does¶
Mojibake is text that appears corrupted because it was decoded using a wrong character encoding.
This rule detects common Mojibake patterns, such as UTF-8 text that has been misread as Windows-1252 or ISO-8859-1.
Examples of Mojibake include:
Caféinstead ofCafé–instead of–’instead of’
Why this matters¶
Encoding problems may replace valid Unicode characters such as ✓, ©, §, or ✅ by weird uncommonly used characters such as ✓, ©, §, or ✅
Such issues typically happen when several people work collaboratively using different editors, IDEs, OS and configurations. Detecting encoding problems early allows the team to identify the causes of the issues and to fix them before they spread.
This rule uses regex-based detection for suspicious character sequences commonly associated with encoding issues.
To fix existing issues in a documentation base, you can use tools such as ftfy (in Python)
or plsfix (a reimplementation in Rust).
Examples¶
Incorrect¶
Correct¶
Configuration¶
ignore: A list of exact mojibake sequences to ignore, such as"–"or"’". Default:[].ignore-code-blocks: Whether to ignore findings inside code, meaning fenced and indented code blocks as well as inline code spans. Default:true.
Example:
With this configuration, MD083 skips findings for those exact mojibake sequences and also reports mojibake inside code blocks and inline code spans.