Comment lire utf16 fichier texte à la chaîne dans golang?

Je peux lire le fichier de tableau d'octets

mais quand je les convertir en string

il traiter l'utf16 octets ascii

Comment convertir correctement?

package main

import ("fmt"
"os"
"bufio"
)

func main(){
    //read whole the file
    f, err := os.Open("test.txt")
    if err != nil {
        fmt.Printf("error opening file: %v\n",err)
        os.Exit(1)
    }
    r := bufio.NewReader(f)
    var s,b,e = r.ReadLine()
    if e==nil{
        fmt.Println(b)
        fmt.Println(s)
        fmt.Println(string(s))
    }
}

de sortie:

faux

[255 254 91 0 83 0 99 0 114 0 105 0 112 0 116 0 32 0 73 0 110 0 102 0 111 0 93 0
13 0]

S c r i p t I o n de f o ]


Mise à jour:

Après j'ai testé les deux exemples, j'ai understanded quel est le problème exact maintenant.

Dans windows, si j'ajoute un saut de ligne (CR+LF) à la fin de la ligne, le CR sera lu dans la ligne. Parce que la fonction readline ne peut pas gérer l'unicode correctement ([OD OA]=ok, [OD 00 OA 00]=pas ok).

Si la fonction readline peut reconnaître unicode, il faut comprendre [OD 00 OA 00] et retour []uint16 au lieu de []bytes.

Donc je pense que je ne devrais pas utiliser bufio.NewReader comme il n'est pas capable de lire utf16, je ne vois pas bufio.NewReader.ReadLine peut accepter des paramètres comme indicateur pour indiquer que la lecture de texte est utf8, utf16le ou utf32. Est-il readline fonction de texte unicode en aller à la bibliothèque?

InformationsquelleAutor CL So | 2013-04-03