Question

J'utilise du texte arabe dans mon application. sur le texte arabe du simulateur est très bien plongé.

Mais sur l'appareil, il ne s'affiche pas correctement.

Sur le simulateur, c'est comme مَرْحَبًا que.

Mais sur l'appareil, c'est comme مرحبا.

Mon besoin est celui-ci مَرْحَبًا.

Était-ce utile?

La solution

Créez des ressources texte pour une application MIDP et comment les charger au moment de l'exécution. Cette technique est sûre Unicode, et convient donc à toutes les langues. Le code d'exécution est petit, rapide et utilise relativement peu de mémoire.

Création de la source de texte

اَللّٰهُمَّ اِنِّىْ اَسْئَلُكَ رِزْقًاوَّاسِعًاطَيِّبًامِنْ رِزْقِكَ
مَرْحَبًا

Le processus commence par la création d'un fichier texte. Lorsque le fichier est chargé, chaque ligne devient un objet de chaîne séparé, vous pouvez donc créer un fichier comme:

Cela doit être au format UTF-8. Sur Windows, vous pouvez créer des fichiers UTF-8 dans le bloc-notes. Assurez-vous d'utiliser Enregistrer sous ... et sélectionnez Encoding UTF-8.

enter image description here

Faire le nom arb.utf8

Cela doit être converti en un format qui peut être lu facilement par l'application MIDP. MIDP ne fournit pas de moyens pratiques de lire des fichiers texte, comme BufferedReader de J2SE. Le support Unicode peut également être un problème lors de la conversion entre les octets et les caractères. La façon la plus simple de lire le texte est d'utiliser DataRainput.readUtf (). Mais pour l'utiliser, nous devons avoir écrit le texte en utilisant dataOutput.writeUtf ().

Vous trouverez ci-dessous un simple programme J2SE, ligne de commande qui lira le fichier .uft8 que vous avez enregistré à partir du bloc-notes, et créera un fichier .res à aller dans le pot.

import java.io.*;
import java.util.*;

public class TextConverter {

    public static void main(String[] args) {
        if (args.length == 1) {
            String language = args[0];

            List<String> text = new Vector<String>();

            try {
                // read text from Notepad UTF-8 file
                InputStream in = new FileInputStream(language + ".utf8");
                try {
                    BufferedReader bufin = new BufferedReader(new InputStreamReader(in, "UTF-8"));
                    String s;
                    while ( (s = bufin.readLine()) != null ) {
                        // remove formatting character added by Notepad
                        s = s.replaceAll("\ufffe", "");
                        text.add(s);
                    }
                } finally {
                    in.close();
                }

                // write it for easy reading in J2ME
                OutputStream out = new FileOutputStream(language + ".res");
                DataOutputStream dout = new DataOutputStream(out);
                try {
                    // first item is the number of strings
                    dout.writeShort(text.size());
                    // then the string themselves
                    for (String s: text) {
                        dout.writeUTF(s);
                    }
                } finally {
                    dout.close();
                }
            } catch (Exception e) {
                System.err.println("TextConverter: " + e);
            }
        } else {
            System.err.println("syntax: TextConverter <language-code>");
        }
    }
}

Pour convertir arb.utf8 en arb.res, exécutez le convertisseur comme:

java TextConverter arb

Utilisation du texte au moment de l'exécution

Placez le fichier .res dans le pot.

Dans l'application midp, le texte peut être lu avec cette méthode:

  public String[] loadText(String resName) throws IOException {
    String[] text;
    InputStream in = getClass().getResourceAsStream(resName);
    try {
        DataInputStream din = new DataInputStream(in);
        int size = din.readShort();
        text = new String[size];
        for (int i = 0; i < size; i++) {
            text[i] = din.readUTF();
        }
    } finally {
        in.close();
    }
    return text;
}

Chargez et utilisez du texte comme ceci:

String[] text = loadText("arb.res");
System.out.println("my arabic word from arb.res file ::"+text[0]+" second from arb.res file ::"+text[1]);

J'espère que ceci vous aidera. Merci

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top