我正在尝试读取每行包含英文和阿拉伯字符的文件以及每行包含英文和中文字符的另一个文件。然而,阿拉伯文和中文的字符无法正确显示 - 它们只是显示为问号。知道如何解决这个问题吗?
这是我用来阅读的代码:
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 (包含所有预期单词)中搜索Given Arabic Text (使用 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。如果在两个 ArrayList 中都找不到它们,则返回 null。
03版
当我调试时,我发现正在读取的行存储在我的 String 变量中,如下所示:
"3;0000000000;0000001001;1996-06-22;;2010-01-27;����;;01989;������;"
03版
我正在阅读的文件在被另一个程序修改后被提供给我(除了它是用 VB 制作的之外,我对此一无所知),该程序使阿拉伯字母出现不正确。当我在 Notepad++ 上检查文件的编码时,它显示它是 ANSI。但是,当我将其转换为 UTF8(将阿拉伯字母替换为其他英文字母)然后将其转换回 ANSI 时,阿拉伯语变成了问号!