La lecture des caractères chinois dans une chaîne de caractères à partir d'un tampon d'octets

J'ai donc un char tableau[] qui contient du texte et d'autres données.

Comment puis-je extraire le texte chinois de la char tableau []? Droit maintenant, je peux obtenir l'anglais bien avec

public String getString(int index, int length) {
    String str = "";

    for (int i = 0; i < length && this.data[index + i] != 0; i++)
        str = str + this.data[index + i];

    return str;
}

alors je vais essayer ceci:

try {
    String charset = "GB18030";
    String str = new String(m.target.getBytes("UTF-16"), "GB18030");
    System.out.println(str);
    System.out.println(str.equals("大家"));
} catch (UnsupportedEncodingException e) {
    //TODO Auto-generated catch block
    e.printStackTrace();
}

m.la cible est une chaîne que j'ai reçu de l'byte[] tableau avec getString() ci-dessus. J'ai essayé les différents codages et les combinaisons d'entre eux et aucun d'entre eux pour afficher correctement le texte (大家) et aucun ne sera de retour vrai pour les str.equals("大家")

MODIFIER

À l'aide de cette méthode, je peux obtenir avec succès les caractères chinois.

public String test(int index, int length) {
    byte[] t = new byte[this.data.length];

    for (int i = 0; i < this.data.length; i++)
        t[i] = (byte) this.data[i];

    try {
        return new String(t, index, length, "GB18030");
    } catch (UnsupportedEncodingException e) {
        //TODO Auto-generated catch block
        e.printStackTrace();
    }

    return null;
}

Mais ma question est maintenant.. je pensais que le max qu'un octet peut être était de 127? Comment le tableau d'octets tenir l'octet de poids fort caractères chinois? Je peux changer le tampon de byte[] au lieu de char[]?

Pourquoi êtes-vous à l'aide de deux "UTF-16" et "GB18030"? Pourquoi ne pas simplement faire: new String(this.data, offset, length, "UTF-16")?
J'ai malencontreusement dit que j'étais à l'aide d'un byte[] tableau pour cette.les données. C'est en fait un tableau de caractères. Si c'était un byte[] tableau ne serait-il pas de ne pas être en mesure de tenir le texte unicode? La plus haute valeur, un octet peut contenir est de 127?
Un char[] serait contiennent du texte en UTF-16 unités de code. Un byte[] pourrait contenir du texte dans n'importe quel encodage comme encodages de texte ne sont rien de plus qu'un moyen de mappage de caractères nombre d'octets.

OriginalL'auteur marcaddeo | 2012-01-15