gpt4 book ai didi

java - 在设备 J2ME 上显示阿拉伯语

转载 作者:行者123 更新时间:2023-11-29 08:08:47 24 4
gpt4 key购买 nike

我在我的应用中使用了一些阿拉伯语文本。在模拟器上,阿拉伯语文本显示正常。

但是在设备上它没有正确显示。

在 Simulator 上就像 موْحووًا 那样。

但在设备上它就像 مرحبا。

我需要的是这个 موْحووًا。

最佳答案

为 MIDP 应用程序创建文本资源,以及如何在运行时加载它们。这种技术是 unicode 安全的,因此适用于所有语言。运行时代码小,速度快,使用的内存相对较少。

创建文本源

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

该过程从创建一个文本文件开始。加载文件时,每一行都变成一个单独的 String 对象,因此您可以创建一个文件,如:

这需要采用 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

在运行时使用文本

将 .res 文件放入 JAR 中。

在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]);

希望对您有所帮助。谢谢

关于java - 在设备 J2ME 上显示阿拉伯语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9494472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com