Categorygithub.com/tomtwinkle/garbledreplacer
repositorypackage
0.2.0
Repository: https://github.com/tomtwinkle/garbledreplacer.git
Documentation: pkg.go.dev

# README

garbledreplacer

GitHub Go Report Card GitHub Workflow Status GitHub Workflow Status

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())
// 一二三四?五六七八九?十拾壱