У меня есть вопрос, я пытаюсь прочитать из файла набор пар ключей и значений (например, словарь). Для этого я использую следующий код:Чтение специальных символов в java
InputStream is = this.getClass().getResourceAsStream(PROPERTIES_BUNDLE);
properties=new Hashtable();
InputStreamReader isr=new InputStreamReader(is);
LineReader lineReader=new LineReader(isr);
try {
while (lineReader.hasLine()) {
String line=lineReader.readLine();
if(line.length()>1 && line.substring(0,1).equals("#")) continue;
if(line.indexOf("=")!=-1){
String key=line.substring(0,line.indexOf("="));
String value=line.substring(line.indexOf("=")+1,line.length());
properties.put(key, value);
}
}
} catch (IOException e) {
e.printStackTrace();
}
И функция readLine.
public String readLine() throws IOException{
int tmp;
StringBuffer out=new StringBuffer();
//Read in data
while(true){
//Check the bucket first. If empty read from the input stream
if(bucket!=-1){
tmp=bucket;
bucket=-1;
}else{
tmp=in.read();
if(tmp==-1)break;
}
//If new line, then discard it. If we get a \r, we need to look ahead so can use bucket
if(tmp=='\r'){
int nextChar=in.read();
if(tmp!='\n')bucket=nextChar;//Ignores \r\n, but not \r\r
break;
}else if(tmp=='\n'){
break;
}else{
//Otherwise just append the character
out.append((char) tmp);
}
}
return out.toString();
}
Все в порядке, однако я хочу, чтобы он мог разбирать специальные символы. Например: - это будет кодифицировано в \ u00F3, однако в этом случае он не заменяет его правильным символом ... Каким будет способ сделать это?
EDIT: Забыл сказать, что, поскольку я использую JavaME Свойства класса или ничего подобного не существует, поэтому может показаться, что я изобретать колесо ...
Пробовал следующее: isr = new InputStreamReader (есть, «UTF8»); однако это не сработало ... нужно упомянуть, что я работаю с JavaME – Pablo
. Что кодируется? UTF8 или UTF16? Потому что UTF8 похож на ASCII, и чтение его неверно будет терять символы. –
Просто изменил документ на UTF8, однако не результаты ... – Pablo