Pourquoi Java BufferedReader () ne lit-il pas correctement les caractères arabes et chinois?

J'essaie de lire un fichier qui contient l'anglais & caractères arabes sur chaque ligne et un autre fichier qui contient l'anglais & caractères Chinois sur chaque ligne. Cependant, les caractères de la langue arabe et Chinois ne parviennent pas à voir correctement: il suffit qu'ils apparaissent comme des points d'interrogation. Une idée de comment je peux résoudre ce problème?

Voici le code que j'utilise pour la lecture:

try {
        String sCurrentLine;
        BufferedReader br = new BufferedReader(new FileReader(directionOfTargetFile));
        int counter = 0;

        while ((sCurrentLine = br.readLine()) != null) {
            String lineFixedHolder = converter.fixParsedParagraph(sCurrentLine);
            System.out.println("The line number "+ counter
                               + " contain : " + sCurrentLine);
            counter++;
        }
    }

Édition 01

Après la lecture de la ligne et d'obtenir l'arabe et le Chinois mot que j'utilise une fonction pour traduire simplement par la recherche de Donné le Texte arabe dans une ArrayList (qui contiennent tous les mots) (à l'aide d'indexOf(); la méthode). Puis, quand le mot de l'indice est trouvé, il est utilisé pour appeler le mot en anglais qui a le même indice dans une autre liste de tableaux. Cependant, cette recherche renvoie toujours faux car il échoue lors de la recherche des points d'interrogation à la place de la langue arabe et en caractères Chinois. Donc mon Système..println impression de me montre les valeurs null, un pour chaque échec à traduire.

*Je suis à l'aide de Netbeans 6.8 version Mac IDE


Édition 02

Voici le code de la recherche, de la traduction:

        int testColor = dbColorArb.indexOf(wordToTranslate);
        int testBrand = -1;
        if ( testColor != -1 ) {
            String result = (String)dbColorEng.get(testColor);
            return result;
        } else {
            testBrand = dbBrandArb.indexOf(wordToTranslate);
        }
        //System.out.println ("The testBrand is : " + testBrand);
        if ( testBrand != -1 ) {
            String result = (String)dbBrandEng.get(testBrand);
            return result;
        } else {
            //System.out.println ("The first null");
            return null;
        }

En fait, je suis à la recherche de 2 Arraylists qui peut contenir le mot de votre choix pour traduire. Si elle ne parvient pas à les trouver dans les deux ArrayLists, la valeur null est retournée.


Édition 03

Quand je debug, j'ai trouvé que les lignes en cours de lecture sont stockés dans ma variable de Chaîne comme suit:

 "3;0000000000;0000001001;1996-06-22;;2010-01-27;����;;01989;������;"

Édition 03

Le fichier que je suis en train de lire m'a été donné après qu'il a été modifié par un autre programme (dont je ne sais rien sur les côté c'est fait en VB) le programme de l'arabe lettres qui n'apparaissent pas correctement à apparaître. Quand j'ai vérifié l'encodage du fichier sur Notepad++, il a montré que c'est la norme ANSI. cependant, quand je le convertir en UTF8 (qui a remplacé la lettre arabe avec d'autres en anglais), puis de la convertir à la norme ANSI arabe, de devenir des points d'interrogation!

source d'informationauteur |