2012-02-29 56 views
1

我在我的應用中使用了一些阿拉伯文字。在模擬器上阿拉伯語文本很好。在設備上顯示阿拉伯文J2ME

但在設備上顯示不正確。

模擬器上它像مرحبا這一點。

但在設備上它就像مرحبا。

我的需要是這一個مرحبا。

回答

5

一個MIDP應用程序創建的文本資源,以及如何在運行時加載它們。這種技術是unicode安全的,因此適用於所有語言。運行時代碼很小,速度很快,並且使用相對較少的內存。

創建文本源

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

的過程與創建一個文本文件開始。當加載該文件中,每一行的單獨字符串對象,因此可以創建像一個文件:

這需要在UTF-8格式。在Windows上,您可以在記事本中創建UTF-8文件。確保使用另存爲...,然後選擇UTF-8編碼。

enter image description here

讓arb.utf8

這需要轉換爲可以很容易地通過MIDP應用程序可以讀取的格式的名稱。 MIDP不提供便捷的方式來讀取文本文件,如J2SE的BufferedReader。在字節和字符之間轉換時,Unicode支持也可能成爲問題。讀取文本的最簡單方法是使用DataInput.readUTF()。但要使用這個,我們需要使用DataOutput.writeUTF()寫入文本。

下面是一個簡單的J2SE的命令行程序來讀取你從記事本保存的文件.uft8,並創建一個res文件在JAR去。

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.utf8轉換爲arb.res,運行轉換器:在運行時

java TextConverter arb 

使用文本

放入JAR的res文件。

在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結果然後做那個work.is它是正確的 – user1239521 2012-02-29 07:26:40

+0

@ user1239521如果這個答案幫助了你,你有了這個想法,然後用答案旁邊的答案標記問題。 – AbdulAziz 2012-02-29 07:27:36

+0

@ Sajid Shaikh替換功能和列表在j2ME中。 – user1239521 2012-02-29 09:23:07