我正在尝试读取一个每行包含英文和阿拉伯字符的文件以及另一个每行包含英文和中文字符的文件。然而,阿拉伯文和中文的字符无法正确显示 - 它们只是显示为问号。知道我该如何解决这个问题吗?
这是我用于阅读的代码:
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++;
}
}
01版
阅读该行并获得阿拉伯语和中文单词后,我使用一个函数通过简单地搜索来翻译它们给定阿拉伯语文本在 ArrayList 中(包含所有预期的单词)(使用 indexOf(); 方法)。然后,当找到单词的索引时,它会用来调用另一个 Arraylist 中具有相同索引的英语单词。然而,此搜索始终返回 false,因为在搜索问号而不是阿拉伯字符和中文字符时失败。因此,我的 System.out.println 打印显示了空值,每次翻译失败都有一个空值。
*我使用的是Netbeans 6.8 Mac版IDE
02版
这是搜索翻译的代码:
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;
}
我实际上正在搜索 2 个数组列表,其中可能包含要翻译的所需单词。如果未能在两个 ArrayList 中找到它们,则返回 null。
03版
当我调试时,我发现正在读取的行存储在我的字符串变量中,如下所示:
"3;0000000000;0000001001;1996-06-22;;2010-01-27;����;;01989;������;"
03版
我正在阅读的文件是在被另一个程序修改后交给我的(除了它是用 VB 编写的之外,我对此一无所知),该程序使未正确显示的阿拉伯字母出现。当我在 Notepad++ 上检查文件的编码时,它显示它是 ANSI。然而,当我将其转换为UTF8(用其他英文字母替换阿拉伯字母)然后将其转换回ANSI时,阿拉伯语变成了问号!