我试图读取一个文件,每行都包含英文和阿拉伯文字符以及另一个文件,每行都包含英文和中文字符。但是阿拉伯文和中文的字符显示不正确 - 它们只显示为问号。有什么想法可以解决这个问题吗?
以下是我用于读取的代码:
try {
String sCurrentLine;
BufferedReader br = new BufferedReader(new FileReader(directionOfTargetFile));
int counter = 0;
while ((sCurrentLine = br.readLine()) != null) {
String lineFixedHolder = converter.fixParsedParagraph(sCurrentLine);
System.out.println("The line number "+ counter
+ " contain : " + sCurrentLine);
counter++;
}
}
第一版
读取行并获取阿拉伯和中文单词后,我使用一个函数通过在一个包含所有期望单词的 ArrayList 中搜索“给定的阿拉伯文本”(使用indexOf()方法)来翻译它们。然后,当找到单词的索引时,就会用它调用另一个 Arraylist 中具有相同索引的英文单词。然而,这种搜索总是返回 false,因为它在搜索问号而不是阿拉伯和中文字符时失败了。因此,我的 System.out.println 打印出 nulls,每个失败的翻译都有一个。
* 我正在使用 Netbeans 6.8 Mac 版 IDE
第二版
以下是搜索翻译的代码:
int testColor = dbColorArb.indexOf(wordToTranslate);
int testBrand = -1;
if ( testColor != -1 ) {
String result = (String)dbColorEng.get(testColor);
return result;
} else {
testBrand = dbBrandArb.indexOf(wordToTranslate);
}
//System.out.println ("The testBrand is : " + testBrand);
if ( testBrand != -1 ) {
String result = (String)dbBrandEng.get(testBrand);
return result;
} else {
//System.out.println ("The first null");
return null;
}
我正在搜索可能包含所需翻译单词的两个ArrayList。如果在两个ArrayList中都找不到它们,则返回null。
第03版
当我进行调试时,我发现读取的行以以下方式存储在我的String变量中:
"3;0000000000;0000001001;1996-06-22;;2010-01-27;����;;01989;������;"
第三版
我正在阅读的文件是由另一个程序修改后给我的(除了它是用VB编写的,我对它一无所知),该程序使未能正确显示的阿拉伯字母得以显示。当我在Notepad++上检查文件的编码时,显示它是ANSI编码。但是,当我将它转换为UTF8编码(这替换了阿拉伯字母为其他英文字母),然后再将其转换回ANSI编码时,阿拉伯字母变成了问号!
-Dfile.encoding=UTF-8
VM参数,就像我在我的答案中提到的那样? - BozhoISO-8859-1
。但它不能包含阿拉伯符号。我重复一下关于VM参数的问题。 - Bozho