Die von Java generierte UTF-16LE-codierte Desktop.ini funktioniert nicht, wenn sie chinesische Zeichen enthältJava

Java-Forum
Guest
 Die von Java generierte UTF-16LE-codierte Desktop.ini funktioniert nicht, wenn sie chinesische Zeichen enthält

Post by Guest »

Ich versuche, über Java eine desktop.ini-Datei zu erstellen, um einen alternativen Namen für den Windows11-Ordner bereitzustellen (so wie Eigene Dateien aussieht).
Hier ist ein einfaches Codebeispiel (es kann direkt zum Ausführen aufgerufen werden):

Code: Select all

@Test
public void createDesktopIni() throws IOException {
String folderPath = Write a folder path here;
String iniPath = folderPath + "\\desktop.ini";
File file = new File(iniPath);
// delete and recreate if exist
if (file.exists()) {
file.delete();
}
file.createNewFile();
// Write content
String alternativeName = "Alternative Name";
//alternativeName = "这是一个中文别名";
OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_16LE);
oStreamWriter.write("[.ShellClassInfo]\nLocalizedResourceName = " + alternativeName);
oStreamWriter.flush();
oStreamWriter.close();
// Set system attribute
Files.setAttribute(Paths.get(folderPath), "dos:system", true, LinkOption.NOFOLLOW_LINKS);
Files.setAttribute(Paths.get(iniPath), "dos:system", true, LinkOption.NOFOLLOW_LINKS);
Files.setAttribute(Paths.get(iniPath), "dos:hidden", true, LinkOption.NOFOLLOW_LINKS);
}
Wenn ich einen englischen Alternativnamen festlege, kann die desktop.ini normal funktionieren. (Übrigens kann diese Datei derzeit normal über VSCode geöffnet werden).
Wenn ich jedoch einen chinesischen alternativen Namen wie Kommentar festlege:

Code: Select all

alternativeName = "这是一个中文别名";
Derzeit funktioniert die Datei desktop.ini nicht.
Wenn ich sie durch öffne VSCode wird der folgende Inhalt angezeigt:
Image

Aber wenn ich Trotzdem öffnen->Erneut öffnen mit wähle UTF-16 LE-Kodierung und dann die Datei als UTF-16 LE über VS Code speichern, funktioniert es wieder einwandfrei.
Hier sind einige andere Kodierungen, die ich ausprobiert habe:
  • UTF-8 funktioniert, aber chinesische Schriftzeichen werden in Explorer.exe verstümmelt.
  • GBK funktioniert und es wird nicht verstümmelt . Aber ich bevorzuge die Verwendung von UTF-16. Ich sehe, dass die desktop.ini im Ordner Eigene Dateien auch UTF-16 LE verwendet.
    < li>UTF-16 funktioniert nicht und die Datei wird in UTF-16 BE codiert.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post