gpt4 book ai didi

java - 读取java中的特殊字符

转载 作者:行者123 更新时间:2023-11-29 05:59:15 24 4
gpt4 key购买 nike

我有一个问题,我正在尝试从一个文件中读取一组键值对(就像字典)。为此,我使用以下代码:

 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,但在这种情况下,它没有用正确的字符替换它......应该怎么做?

编辑:忘了说,因为我使用的是 JavaME,所以 Properties 类或任何类似的东西都不存在,这就是为什么看起来我正在重新发明轮子的原因......

最佳答案

如果它是用 UTF-16 编码的,你能不能只InputStreamReader isr = new InputStreamReader(is, "UTF16")?

这会从一开始就识别您的特殊字符,您不需要进行任何替换。

关于java - 读取java中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10788175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com