【发布时间】:2010-12-26 04:14:47
【问题描述】:
我想读取输入字符串并将其作为 UTF8 编码字符串返回。所以我在 Oracle/Sun 网站上找到了一个使用 FileInputStream 的示例。我不想读取文件,而是读取字符串,所以我将其更改为 StringBufferInputStream 并使用下面的代码。方法参数jtext,是一些日文文本。 其实这个方法很好用。问题是关于已弃用的代码。我不得不放 @SuppressWarnings 因为 StringBufferInputStream 已被弃用。我想知道是否有更好的方法来获取字符串输入流?可以保持原样吗?我花了很长时间试图解决这个问题,以至于我不想改变任何东西,现在我似乎已经破解了它。
@SuppressWarnings("deprecation")
private String readInput(String jtext) {
StringBuffer buffer = new StringBuffer();
try {
StringBufferInputStream sbis = new StringBufferInputStream (jtext);
InputStreamReader isr = new InputStreamReader(sbis,
"UTF8");
Reader in = new BufferedReader(isr);
int ch;
while ((ch = in.read()) > -1) {
buffer.append((char)ch);
}
in.close();
return buffer.toString();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
我想我找到了一个解决方案 - 有点:
private String readInput(String jtext) {
String n;
try {
n = new String(jtext.getBytes("8859_1"));
return n;
} catch (UnsupportedEncodingException e) {
return null;
}
}
在我拼命使用 getBytes(UTF8) 之前。但我偶然使用了 Latin-1 "8859_1" 并且它起作用了。为什么它起作用,我无法理解。这是我一步一步做的:
OpenOffice CSV(utf8)------>SQLite(utf8, 显然)------->java 编码为 Latin-1,以某种方式可读。
【问题讨论】:
标签: java inputstream