我在使用 Netbeans
文件查看器时遇到了问题。我的一个阿拉伯字符串中包含每个字母上方的附加符号。当我从字符串中删除这些附加符号时,字母正确显示。但是,当我写带有附加符号的字符串时,它变得无序(不正确)。
以下是正在发生的事情的示例:
- 没有附加符号的文本(正确):
بسم الله الرحمن الرحيم
- 带有附加符号的文本(错误):
it shows broken, but if i copy it here it prints correctly
- 应该像这样(正确):
بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ
我编写的代码用于读取包含阿拉伯字符串及其附加符号的文本文件,将其正确地写入新文件,然后最后删除旧文件。这是代码:
public void arabicReformer(File disordered) {
File output = new File("data/temp2.txt");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(disordered), "UTF8"));
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(output), "UTF8"));
String line;
while ((line = br.readLine()) != null) {
bw.write(line.trim() + "\n");
}
br.close();
bw.close();
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
output.renameTo(disordered);
}
PS:当我复制粘贴带有重音符号的不正确的阿拉伯字符串时,在此处打印的是正确的!
java.text.Normalizer
可以在它们之间进行转换。我认为字母+重音会导致表示错误。创建一个错误报告。也许 RTL/LTR 控件已经解决了这个问题。 - Joop Eggen