Skip to content

Instantly share code, notes, and snippets.

@takatoshiono
Last active June 12, 2019 08:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takatoshiono/01007196e4231c1cb9fbe1858189943a to your computer and use it in GitHub Desktop.
Save takatoshiono/01007196e4231c1cb9fbe1858189943a to your computer and use it in GitHub Desktop.
package main
import (
"bytes"
"fmt"
"io/ioutil"
"log"
"os"
"golang.org/x/text/encoding/japanese"
"golang.org/x/text/transform"
)
func main() {
if len(os.Args) < 2 {
fmt.Printf("Usage: %s file\n", os.Args[0])
return
}
filename := os.Args[1]
f, err := os.Open(filename)
if err != nil {
log.Fatalf("failed to open: %v", err)
}
defer f.Close()
r := transform.NewReader(f, japanese.ShiftJIS.NewDecoder())
// Dump to STDOUT
//_, err = io.Copy(os.Stdout, r)
//if err != nil {
// log.Fatalf("failed to copy: %v\n", err)
//}
b, err := ioutil.ReadAll(r)
if err != nil {
log.Fatalf("failed to read: %v\n", err)
}
// Check replacement rune exists.
// https://godoc.org/golang.org/x/text/encoding#Decoder
n := bytes.Index(b, []byte("\ufffd"))
if n != -1 {
fmt.Printf("replacement rune found at %d\n", n)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment