2012-02-29 15 views
1

私のアプリでアラビア語のテキストを使用しています。 on simulatorアラビア語のテキストがうまく表示されます。デバイスにアラビア語を表示するJ2ME

ただし、デバイスに正しく表示されません。

シミュレータでは、それはمرحباのようです。

しかし、デバイスではそれはمرحباのようです。

私の必要性はこれですمرحبا。

答えて

5

MIDPアプリケーション用のテキストリソースと、実行時にそれらをロードする方法を作成します。この手法はユニコードで安全なので、すべての言語に適しています。ランタイムコードは小さく、高速であり、比較的少ないメモリしか使用しません。

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

プロセスは、テキストファイルの作成を開始し、テキストソースの作成。ファイルがロードされると、各行は別々のStringオブジェクトになりますので、次のようなファイルを作成できます。

これはUTF-8形式である必要があります。 Windowsでは、メモ帳でUTF-8ファイルを作成できます。名前を付けて保存...を使用し、UTF-8エンコーディングを選択してください。

enter image description here

これは、MIDPアプリケーションで簡単に読み取ることができる形式に変換する必要が

arb.utf8名前を確認します。 MIDPは、J2SEのBufferedReaderのようなテキストファイルを読み込むための便利な方法を提供していません。 Unicodeのサポートは、バイトと文字の間の変換時にも問題になる可能性があります。テキストを読み込む最も簡単な方法は、DataInput.readUTF()を使用することです。しかしこれを使うには、DataOutput.writeUTF()を使ってテキストを書かなければなりません。

以下は、メモ帳から保存した.uft8ファイルを読み込み、JARに入るための.resファイルを作成する簡単なJ2SEのコマンドラインプログラムです。

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>"); 
     } 
    } 
} 

としてコンバータを実行し、arb.resにarb.utf8を変換するには:ランタイム

.RESは、JARファイルにPlaceのテキストを使用して

java TextConverter arb 

。 MIDPアプリケーションで

、テキストは、この方法で読むことができます:

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; 
} 

ロードし、このようなテキストを使用します。

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

を、これはあなたを助けることを願っています。ありがとう

+0

私はデータベースfloggyの私のアラビア語の文字列を持っている。それは私がストリームが必要ないと思うか、最初にファイル内にqureyの結果を書き込んだらその仕事をしてください。それは正しいですか? – user1239521

+0

@ user1239521この答えがあなたを助け、あなたのアイデアを得たら、答えの横の目盛り記号。 – AbdulAziz

+0

@ Sajid Shaikhは交換用のfuctionとlistはj2MEです。 – user1239521

関連する問題