garbledreplacer
garbledreplacer copied to clipboard
Transformer to convert characters that cannot be converted to another string when converting character codes with golang's transform.Transformer.
garbledreplacer
Overview
transform.Transformer
to replace characters that cannot be converted from UTF-8
to another character encoding.
UTF-8
から別の文字コードに変換する際、変換出来ない文字を別の文字に置き換えるための transform.Transformer
。
Motivation
Golang標準の japanese.ShiftJIS
等のEncoderでは変換出来ない文字が合った場合
rune not supported by encoding
errorが出てしまい変換ができない。
そのため、Encoderを通す前に変換できない文字を事前に別の文字に置き換える為のTransformerを作成した。
japanese.ShiftJIS
japanese.EUCJP
traditionalchinese.Big5
などのEncoderの前にtransform.Chain
で動作する薄いwrapperとなっている。
Usage
const msg = "一二三四🍣五六七八九🍺十拾壱"
var buf bytes.Buffer
w := transform.NewWriter(&buf, garbledreplacer.NewTransformer(japanese.ShiftJIS, '?'))
if _, err := w.Write([]byte([]byte(msg))); err != nil {
panic(err)
}
if err := w.Close(); err != nil {
panic(err)
}
fmt.Println(buf.String())
// 一二三四?五六七八九?十拾壱