我想把一个字符串变成一个String [],但它并不工作我想要它的工作方式!我的代码:
public static void get(HashMap<String, String> saves, File file) throws UnsupportedEncodingException, FileNotFoundException, IOException{
if (!file.exists()){
return;
}
InputStreamReader reader;
reader = new InputStreamReader(new FileInputStream(file), "UTF-16");
String r = null;
String[] s;
BufferedReader bufreader = new BufferedReader(reader);
while((r=bufreader.readLine()) != null){
s = r.split("=");
if (s.length < 2){
System.out.println(s.length);
System.out.println(s[0]);
return;
}
saves.put(s[0].toString(), s[1].toString());
s = null;
}
}
当我告诉它将String打印到控制台
时System.out.println(s.length);
System.out.println(s[0]);
它只是打印:
1
??????????????????
-
-
应该阅读的内容(文件中包含的内容):
1=welcome
2=hello
3=bye
4=goodbye
所以我希望它将值放入hashmap:
saves.put("1", "welcome");
saves.put("2", "hello");
saves.put("3", "bye");
saves.put("4", "goodbye");
但是 s = e.split(&#34; =&#34;)没有拆分它使字符串变为&#34; ?????????? &#34; 谢谢!
答案 0 :(得分:4)
您似乎正在使用错误的编码。
您的输入文件实际上不是UTF-16
,因为Java代码需要它。
我将您的示例数据保存在一个文件中,结果同样被破坏了。
我系统上的默认编码是UTF-8,因此我使用以下命令更改了文件的编码:
iconv -f utf-8 -t utf-16 orig.txt > converted.txt
在converted.txt
上使用您的程序时,
它产生预期的输出。
如果我使用orig.txt
,它也会产生预期的输出,
并在程序中进行这个简单的更改:
reader = new InputStreamReader(new FileInputStream(file), "UTF-8");
您可以确保文件是UTF-16编码的,
如果没有,转换它,
或者在创建InputStreamReader
时使用正确的编码。