使用 UTF-8 正确编码 - java

oni*_*ght 0 java encoding utf-8 iso-8859-1 character-encoding

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

字符串:“Cœurs d'artichauts Grillées”

  1. 是否工作(– 正确显示,而撇号被翻译成问号):

    Files.write(path, content.getBytes(StandardCharsets.ISO_8859_1));
    
    Run Code Online (Sandbox Code Playgroud)
  2. 不起作用(导致文件):

    Files.write(path, content.getBytes(StandardCharsets.UTF_8));
    
    Run Code Online (Sandbox Code Playgroud)

根据这个问题的第一个答案,UTF-8 应该也能正确编码 – 。有谁知道我做错了什么?

Kar*_*cki 5

你的第二种方法有效

String content = "Cœurs d’artichauts grillées";
Path path = Paths.get("out.txt");
Files.write(path, content.getBytes(Charset.forName("UTF-8")));
Run Code Online (Sandbox Code Playgroud)

正在生成一个out.txt文件:

Cœurs d’artichauts grillées
Run Code Online (Sandbox Code Playgroud)

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