Java 如何生成UTF-8编码的.txt文件?

Java 如何生成UTF-8编码的.txt文件?,java,servlets,utf-8,Java,Servlets,Utf 8,我想写一个代码来转换用java编码的UTF-8。我创建了一个“a.txt”文件,该文件在“a.txt”文件中只包含英文字符。生成时,它给了我ANSI编码的版本,但我需要UTF-8编码的版本 注:- 文件不包含任何特殊字符,它只包含ASCI值。 我已经写了下面的代码 writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); writer.write(content); 没有

我想写一个代码来转换用java编码的UTF-8。我创建了一个“a.txt”文件,该文件在“a.txt”文件中只包含英文字符。生成时,它给了我ANSI编码的版本,但我需要UTF-8编码的版本

注:- 文件不包含任何特殊字符,它只包含ASCI值。

我已经写了下面的代码

writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); 
writer.write(content);

没有ANSI编码(对于前128个字符为ASCII的单字节字符集,这是一个不精确的术语);如果文件只包含ASCII(字符0-127),那么使用UTF-8或“ANSI”编码也没关系

考虑到编辑器推断字符集(或更好的:猜测(!),并且只有ASCII 0-127的UTF-8与实际ASCII或“ANSI”编码之一无法区分,这完全是意料之中的

这意味着,如果您在UTF-8中使用-例如仅
“ABC”
编写文件,则它也是有效的ASCII、Windows-1252、ISO-8859-x以及以ASCII为起点的任何其他字符集。编辑器无法决定实际的字符集是什么,只能报告ANSI

换句话说:你的代码工作正常;只是编辑器的试探法猜测了错误的字符集。最后,文本文件只是一个字节流,只有在应用正确的字符集时才有意义;未在文件本身中指定字符集


PS:您问题中的代码有一个输入错误,因为它引用了
UTF-18
,而UTF-18并不存在。

这可能对您有帮助。您可以在这里找到答案。如果文件中有任何唯一字符,那么它将转换UTF-8,但在我们的文件中只包含英文字符,而不包含任何特殊符号(唯一字符)。@mhasan,@Mikita这些评论对我来说毫无意义。此外,给定您的代码,没有所谓的UTF-18,也没有所谓的ANSI编码(这是一个不精确的术语,用于前127个字符为ASCII的字符集);如果文件只包含ASCII(字符0-127),那么使用UTF-8或“ANSI”编码也没关系。如果您不想将其视为与我链接的问题的重复,则需要显示更多的代码()、示例输入和示例输出。@MarkRotterVeel检查我下面的代码BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),“UTF-8”);作者:写(内容);writer.close();