2014-09-08 07:58:01 +08:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"io"
|
|
|
|
"log"
|
|
|
|
"os"
|
2014-09-08 08:11:13 +08:00
|
|
|
|
|
|
|
"github.com/gogits/gogs/modules/mahonia"
|
2014-09-08 07:58:01 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
// An iconv workalike using mahonia.
|
|
|
|
|
|
|
|
var from = flag.String("f", "utf-8", "source character set")
|
|
|
|
var to = flag.String("t", "utf-8", "destination character set")
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
flag.Parse()
|
|
|
|
|
|
|
|
var r io.Reader = os.Stdin
|
|
|
|
var w io.Writer = os.Stdout
|
|
|
|
|
|
|
|
if *from != "utf-8" {
|
|
|
|
decode := mahonia.NewDecoder(*from)
|
|
|
|
if decode == nil {
|
|
|
|
log.Fatalf("Could not create decoder for %s", *from)
|
|
|
|
}
|
|
|
|
r = decode.NewReader(r)
|
|
|
|
}
|
|
|
|
|
|
|
|
if *to != "utf-8" {
|
|
|
|
encode := mahonia.NewEncoder(*to)
|
|
|
|
if encode == nil {
|
|
|
|
log.Fatalf("Could not create decoder for %s", *to)
|
|
|
|
}
|
|
|
|
w = encode.NewWriter(w)
|
|
|
|
}
|
|
|
|
|
|
|
|
io.Copy(w, r)
|
|
|
|
}
|