【问题标题】:How to generate .txt file as a UTF-8 encoded?如何生成 .txt 文件作为 UTF-8 编码?
【发布时间】:2017-10-08 16:53:25
【问题描述】:

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

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

我已经写了下面的代码。

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

【问题讨论】:

  • 这可能对你有帮助stackoverflow.com/questions/6192910/…
  • 你可以在这里找到答案stackoverflow.com/questions/6192910/…
  • 如果文件中有任何唯一字符可用,则它正在转换 UTF-8,但在我们的文件中仅包含英文字符,但不包含任何特殊符号(唯一字符)。@mhasan,@ Mikita
  • 那些 cmets 对我来说毫无意义。另外,给定您的代码,没有UTF-18 这样的东西,没有像ANSI 编码这样的东西(对于前127 个字符是ASCII 的字符集来说,这是一个不精确的术语);如果您的文件仅包含 ASCII(字符 0 - 127),那么使用 UTF-8 或“ANSI”编码之一都没关系。如果您不想将其视为与我链接的问题的重复,则需要显示更多代码 (minimal reproducible example)、示例输入和示例输出。
  • @MarkRotteveel 检查我下面的代码 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); writer.write(内容); writer.close();

标签: java servlets utf-8


【解决方案1】:

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

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

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

换句话说:您的代码运行正常;只是您的编辑器的启发式方法在猜测错误的字符集。最后,文本文件只是一个字节流,只有在应用正确的字符集时才有意义;文件本身没有指定字符集。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多