Skip to content

Instantly share code, notes, and snippets.

@adz
Forked from xijo/encoding_repairer.rb
Created September 5, 2024 05:12
Show Gist options
  • Select an option

  • Save adz/fde89d28b60c58c8ed798b9663bdf5aa to your computer and use it in GitHub Desktop.

Select an option

Save adz/fde89d28b60c58c8ed798b9663bdf5aa to your computer and use it in GitHub Desktop.

Revisions

  1. @xijo xijo created this gist Aug 3, 2015.
    32 changes: 32 additions & 0 deletions encoding_repairer.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    class EncodingRepairer

    REPLACEMENTS = {
    "€" => "€", "‚" => "‚", "„" => "„", "…" => "…", "ˆ" => "ˆ",
    "‹" => "‹", "‘" => "‘", "’" => "’", "“" => "“", "â€" => "”",
    "•" => "•", "–" => "–", "—" => "—", "Ëœ" => "˜", "â„¢" => "™",
    "›" => "›", "Å“" => "œ", "Å’" => "Œ", "ž" => "ž", "Ÿ" => "Ÿ",
    "Å¡" => "š", "Ž" => "Ž", "¡" => "¡", "¢" => "¢", "£" => "£",
    "¤" => "¤", "Â¥" => "¥", "¦" => "¦", "§" => "§", "¨" => "¨",
    "©" => "©", "ª" => "ª", "«" => "«", "¬" => "¬", "®" => "®",
    "¯" => "¯", "°" => "°", "±" => "±", "²" => "²", "³" => "³",
    "´" => "´", "µ" => "µ", "¶" => "¶", "·" => "·", "¸" => "¸",
    "¹" => "¹", "º" => "º", "»" => "»", "¼" => "¼", "½" => "½",
    "¾" => "¾", "¿" => "¿", "À" => "À", "Â" => "Â", "Ã" => "Ã",
    "Ä" => "Ä", "Ã…" => "Å", "Æ" => "Æ", "Ç" => "Ç", "È" => "È",
    "É" => "É", "Ê" => "Ê", "Ë" => "Ë", "ÃŒ" => "Ì", "ÃŽ" => "Î",
    "Ñ" => "Ñ", "Ã’" => "Ò", "Ó" => "Ó", "Ô" => "Ô", "Õ" => "Õ",
    "Ö" => "Ö", "×" => "×", "Ø" => "Ø", "Ù" => "Ù", "Ú" => "Ú",
    "Û" => "Û", "Ü" => "Ü", "Þ" => "Þ", "ß" => "ß", "á" => "á",
    "â" => "â", "ã" => "ã", "ä" => "ä", "Ã¥" => "å", "æ" => "æ",
    "ç" => "ç", "è" => "è", "é" => "é", "ê" => "ê", "ë" => "ë",
    "ì" => "ì", "í" => "í", "î" => "î", "ï" => "ï", "ð" => "ð",
    "ñ" => "ñ", "ò" => "ò", "ó" => "ó", "ô" => "ô", "õ" => "õ",
    "ö" => "ö", "÷" => "÷", "ø" => "ø", "ù" => "ù", "ú" => "ú",
    "û" => "û", "ü" => "ü", "ý" => "ý", "þ" => "þ", "ÿ" => "ÿ"
    }

    def repair(value)
    value or return
    value.gsub!(Regexp.new(REPLACEMENTS.keys * ?|), REPLACEMENTS)
    end
    end