继承和创建 UTF-8 文件的错误或错误
a bug or an error with inheritance and creating UTF-8 files
我已经测试了生成 UTF-8 文本文件的最佳且更安全的方法,但是当我在多个 abstract [=34] 中使用它时=]es,它生成 ANSI 格式 文件而不是 UTF-8 格式!
是否有任何错误或阻止它的东西?
同样,我的代码是正确的,当我将所有代码放在一个 class 中时,程序可以毫无问题地创建 UTF-8 文件。
我通过 3 个 class 文件为您提供测试所需的代码:
class A0.java:
public class A0 extends A1 {
public static void main(String[] args) {
// if you want to use A1 which is extended by this class
// uncomment this two lines
// A1 run = new A1();
// run.save();
// But if you want to use A2 which isn't extended or inherited
// uncomment this lines
// A2 a2 = new A2();
// try {
// a2.create_new_file("c:/test.txt");
// a2.append_line_to_file("برنامه نویسی");
// } catch (Exception e) {
// }
// Question: Why in A1 we cannot produce properly UTF-8 text file?
}
}
class A1.java:
public class A1 extends A2{
protected void save() {
A2 a2 = new A2();
try {
a2.create_new_file("c:/test.txt");
a2.append_line_to_file("برنامه نویسی");
} catch (Exception e) {
}
}
}
class A2.java:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
public class A2 {
private BufferedWriter writer;
public void create_new_file(String file_address) throws Exception {
writer = new BufferedWriter(new FileWriter(file_address, true));
Files.newBufferedWriter(Paths.get(file_address), Charset.forName("UTF8"));
writer = new BufferedWriter(new FileWriter(file_address, true));
}
public void append_line_to_file(String line) throws IOException {
try {
writer.write(line);
writer.newLine();
writer.flush();
} catch (Exception e) {
}
}
}
它不是 Java 的错误或错误。 我的错 将源文件编码为 UTF-8。
因此,如果您使用的是 Eclipse IDE:
Window > 首选项 > 常规 > 工作区,将 "Text file encoding" 设置为 "Other : UTF-8"。
其他IDE应该有类似的方法。
我已经测试了生成 UTF-8 文本文件的最佳且更安全的方法,但是当我在多个 abstract [=34] 中使用它时=]es,它生成 ANSI 格式 文件而不是 UTF-8 格式! 是否有任何错误或阻止它的东西? 同样,我的代码是正确的,当我将所有代码放在一个 class 中时,程序可以毫无问题地创建 UTF-8 文件。
我通过 3 个 class 文件为您提供测试所需的代码:
class A0.java:
public class A0 extends A1 {
public static void main(String[] args) {
// if you want to use A1 which is extended by this class
// uncomment this two lines
// A1 run = new A1();
// run.save();
// But if you want to use A2 which isn't extended or inherited
// uncomment this lines
// A2 a2 = new A2();
// try {
// a2.create_new_file("c:/test.txt");
// a2.append_line_to_file("برنامه نویسی");
// } catch (Exception e) {
// }
// Question: Why in A1 we cannot produce properly UTF-8 text file?
}
}
class A1.java:
public class A1 extends A2{
protected void save() {
A2 a2 = new A2();
try {
a2.create_new_file("c:/test.txt");
a2.append_line_to_file("برنامه نویسی");
} catch (Exception e) {
}
}
}
class A2.java:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
public class A2 {
private BufferedWriter writer;
public void create_new_file(String file_address) throws Exception {
writer = new BufferedWriter(new FileWriter(file_address, true));
Files.newBufferedWriter(Paths.get(file_address), Charset.forName("UTF8"));
writer = new BufferedWriter(new FileWriter(file_address, true));
}
public void append_line_to_file(String line) throws IOException {
try {
writer.write(line);
writer.newLine();
writer.flush();
} catch (Exception e) {
}
}
}
它不是 Java 的错误或错误。 我的错 将源文件编码为 UTF-8。 因此,如果您使用的是 Eclipse IDE: Window > 首选项 > 常规 > 工作区,将 "Text file encoding" 设置为 "Other : UTF-8"。 其他IDE应该有类似的方法。