Windows-1252 エンコーディングの文字列がありますが、UTF-8 に変換する必要があります。
これは、 quoted-printable Windows-1252でエンコードされたロシア語のテキストを含むフィールドを持つ UTF-8 ファイルを修正するプログラム用です。quoted-printableをデコードするコードは次のとおりです。
(defn reencode
[line]
(str/replace line #"=([0-9A-Fa-f]{2})=([0-9A-Fa-f]{2})"
(fn [match] (apply str
(map #(char (Integer/parseInt % 16)) (drop 1 match))))))
最終的なコードは次のとおりです。
(defn reencode
[line]
(str/replace line #"(=([0-9A-Fa-f]{2}))+"
(fn [[match ignore]]
(String.
(byte-array (map
#(Integer/parseInt (apply str (drop 1 %)) 16)
(partition 3 match)))
"Windows-1252"))))
(String. ... "Encoding")
これは、quoted-printable-encoded 文字のすべての連続実行で使用するエンコーディングを修正します。元の関数はペアをデコードしようとしていたため=3D
、 の引用された印刷可能なエンティティであるなどをスキップし=
ます。