我的代码发生了一些奇怪的事情。我正在尝试打开一个文件并将生成的字符串(基于时间)附加到它,以便以后可以使用它。在我的应用程序中,这种情况发生了一次,但不知何故,这次它并没有给我我希望看到的结果。澄清:
我在班上使用以下代码:
try {
OutputStreamWriter oos = new OutputStreamWriter(context.openFileOutput(ARRANGED_TXT, Context.MODE_PRIVATE));
oos.write(ArrangedTxtAsString);
oos.close();
}
catch(FileNotFoundException e){
Log.e("File Error", "File not found: " + e.toString());
}
和ARRANGED_TXT
被定义为:
private static final String ARRANGED_TXT = "arranged_txt.txt";
ArrangedTxtAsString
是一个字符串,如下所示:
Banana
Pineapple
Orange
Coconut
Strawberry
它是使用StringBuilder制作的。
现在,问题是,生成的文件是这样的:
这不是NotePad ++的问题,因为其他程序会给出相同的结果。值得一提的是,虽然文本看起来像是由非UTF-8字符组成的,但它完全由程序的其余部分处理。这可能听起来有点奇怪,但我想说的是,代码工作正常,但唯一的问题是,通过文本编辑器显示的文本,不应该与它应该的东西相对应看起来像。你知道,我是一个完美主义者,这就是我希望它得到修复的原因。这也可能是未来的问题(调试等)。
修改
似乎字符串包含的内容无关紧要:单个字符,数字或其他内容;它给出了完全相同的结果。即使写""
也会产生那些怪异的角色!
我真的希望有人知道这里发生了什么! 提前谢谢。
答案 0 :(得分:0)
如果你需要编写UTF-8,必须使用带有charset的构造函数,如:
myField.stringValue
OutputStreamWriter(OutputStream out, String charsetName)
否则使用默认编码,而不是所有系统中的utf-8