编码œ;正确使用UTF-8-java

编码œ;正确使用UTF-8-java,java,encoding,utf-8,character-encoding,iso-8859-1,Java,Encoding,Utf 8,Character Encoding,Iso 8859 1,我在将以下字符串正确写入文件时遇到问题。尤其是“œ”这个字。问题出现在我的本地计算机(Windows 7)和服务器(Linux)上 弦乐:“Cœurs d'artichauts grillées” 是否工作(): 不起作用(): 根据的第一个答案,UTF-8也应该能够正确编码œ。有人知道我做错了什么吗?你的第二种方法有效 String content = "Cœurs d’artichauts grillées"; Path path = Paths.get("out.txt"); Fil

我在将以下字符串正确写入文件时遇到问题。尤其是“œ”这个字。问题出现在我的本地计算机(Windows 7)和服务器(Linux)上

弦乐:“Cœurs d'artichauts grillées”

  • 是否工作():

  • 不起作用():



  • 根据的第一个答案,UTF-8也应该能够正确编码œ。有人知道我做错了什么吗?

    你的第二种方法有效

    String content = "Cœurs d’artichauts grillées";
    Path path = Paths.get("out.txt");
    Files.write(path, content.getBytes(Charset.forName("UTF-8")));
    
    正在生成带有以下内容的
    out.txt
    文件:

    Cœurs d’artichauts grillées
    

    您使用的编辑器很可能未正确显示内容。您可能必须强制编辑器使用UTF-8编码和显示œ和其他UTF-8字符的字体。记事本++或IntelliJ IDEA开箱即用。

    第二种方法有效

    String content = "Cœurs d’artichauts grillées";
    Path path = Paths.get("out.txt");
    Files.write(path, content.getBytes(Charset.forName("UTF-8")));
    
    正在生成带有以下内容的
    out.txt
    文件:

    Cœurs d’artichauts grillées
    

    您使用的编辑器很可能未正确显示内容。您可能必须强制编辑器使用UTF-8编码和显示œ和其他UTF-8字符的字体。Notepad++或IntelliJ IDEA开箱即用。

    如果第一种方法“有效”,那么您似乎不想要UTF-8。因为那个写ISO-8859-1。您确定用于显示输出的内容确实需要UTF-8吗?您的字符串
    content
    也可能已经损坏。对于字符串文字,您的Java源文件编码是什么?“它必须与您的编辑认为它应该是的内容相匹配。”Thilo发现问题。绳子事先断了。断线:“Curs d'artichauts grillées”应该是什么样子的:“Cœurs d'artichauts grillées”编辑:断线也不会显示在这里。如果第一种方法“有效”,似乎你不想要UTF-8。因为那个写ISO-8859-1。您确定用于显示输出的内容确实需要UTF-8吗?您的字符串
    content
    也可能已经损坏。对于字符串文字,您的Java源文件编码是什么?“它必须与您的编辑认为它应该是的内容相匹配。”Thilo发现问题。绳子事先断了。断开的字符串:“Curs d'artichauts grillées”它应该是什么样子:“Cœurs d'artichauts grillées”编辑:断开的字符串也不会显示在这里。不要忘记字节顺序标记(BOM)来帮助文本编辑器/查看器自动检测字符集。看,我正在使用这两种工具,但我会检查你所说的。感谢您的快速响应。@oninknight您可以随时使用十六进制编辑器检查文件字节,以查看内容是如何写入的。BOM将作为
    Files.write(path,(“\uFEFF”+content.getBytes(StandardCharsets.UTF_8))添加的我的错误。Intellij让我觉得原来的字符串是正确的。我从调试模式中复制了这个字符串,这让人惊讶。别忘了字节顺序标记(byte order mark,BOM)可以帮助文本编辑器/查看器自动检测字符集。看,我正在使用这两种工具,但我会检查你所说的。感谢您的快速响应。@oninknight您可以随时使用十六进制编辑器检查文件字节,以查看内容是如何写入的。BOM将作为
    Files.write(path,(“\uFEFF”+content.getBytes(StandardCharsets.UTF_8))添加的我的错误。Intellij让我觉得原来的字符串是正确的。我复制了调试模式下的字符串,这让人惊讶。