我正在读一个文件,每行包含英文和阿拉伯字符,每行包含英文和中文字符。然而,阿拉伯语和汉语的字符没有正确显示-它们只是作为问号出现。我知道怎么解决这个问题吗?
这是我用来阅读的代码:
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();方法)。然后当单词的索引被找到时,它被用来调用在另一个数组列表中具有相同索引的英语单词。但是,这个搜索总是返回false,因为它在搜索问号而不是阿拉伯和中文字符时失败。所以我的system.out.println print显示了空值,每次翻译失败都显示一个空值。
*我使用的是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;
}
我实际上在搜索两个数组列表,其中可能包含要翻译的单词。如果在两个ArrayList中都找不到它们,则返回空值。
版本03
调试时,我发现正在读取的行存储在字符串变量中,如下所示:
"3;0000000000;0000001001;1996-06-22;;2010-01-27;����;;01989;������;"
第03版
我正在阅读的文件在被另一个程序修改后被提供给我(除了它是用vb制作的之外我什么都不知道),这个程序生成了不能正确显示的阿拉伯字母。当我在记事本上检查文件的编码时,发现它是ANSI。然而,当我把它转换成utf8(用其他英文字母替换了阿拉伯字母)然后再转换回ansi时,阿拉伯语就变成了问号!