2011-01-10 11 views
6

ich will „Arabisch“ in dem Nachrichtenressourcenbündel (Eigenschaften) Datei schreiben, aber wenn ich versuche, es zu retten bekomme ich diesen Fehler:Java: Wie schreibe ich "Arabisch" in die Eigenschaftendatei?

ISO „Save einige Zeichen nicht abgeschlossen werden kann, kann nicht abgebildet wird mit“ -85591-1 "Zeichencodierung. Entweder ändern Sie Codierung oder entfernen Sie das Zeichen ..."

Kann jemand bitte führen?

ich schreiben möchte:

global.username = اسم المستخدم

Wie soll ich die arabische von "username" in Properties-Datei schreiben? So, dass die Internationalisierung funktioniert ..

BR SC

Antwort

5

Wie bei "Eigenschaften" in der Klasse Referenz beschrieben

The load(Reader)/store(Writer, String) methods load and store properties from and to a character based stream in a simple line-oriented format specified below. The load(InputStream)/store(OutputStream, String) methods work the same way as the load(Reader)/store(Writer, String) pair, except the input/output stream is encoded in ISO 8859-1 character encoding. Characters that cannot be directly represented in this encoding can be written using Unicode escapes ; only a single 'u' character is allowed in an escape sequence. The native2ascii tool can be used to convert property files to and from other character encodings.

0

Wenn Sie Eclipse verwenden, können Sie „Fenster wählen -> Einstellungen "und dann nach" Inhaltstypen "filtern. Dann sollten Sie die Standardcodierung festlegen können. Es gibt einen Screenshot, der dies an der Spitze von this post zeigt.

+0

Und wie wird das genau helfen? – jarnbjo

+1

So stelle ich die Kodierung für die Eigenschaftendatei ein, wenn ich dieselbe Fehlermeldung beim Versuch, etwas Ähnliches zu machen, gefunden habe. – smcmahon

4

Eigenschaften basierte Ressourcenbündel in ISO-8859-1 codiert werden müssen, die Standard-Lademechanismus zu verwenden, aber ich habe diesen Code erfolgreich verwendet, um die Eigenschaften von Dateien zu ermöglichen in UTF-8 codiert werden:

private static class ResourceControl extends ResourceBundle.Control { 
    @Override 
    public ResourceBundle newBundle(String baseName, Locale locale, 
      String format, ClassLoader loader, boolean reload) 
      throws IllegalAccessException, InstantiationException, 
      IOException { 
     String bundlename = toBundleName(baseName, locale); 
     String resName = toResourceName(bundlename, "properties"); 
     InputStream stream = loader.getResourceAsStream(resName); 
     return new PropertyResourceBundle(new InputStreamReader(stream, 
       "UTF-8")); 
    } 

} 

Dann natürlich müssen Sie die Codierung der sich auf UTF-8-Datei ändern in Ihrer IDE, und es wie folgt verwendet werden:

ResourceBundle bundle = ResourceBundle.getBundle(
    "package.Bundle", new ResourceControl()); 
+0

Danke, aber ich spreche von Editor, der den Text in Arabisch gespeichert speichern kann. – SmoothCriminel

+0

@SmoothCriminel: und ich sage Ihnen, dass der Editor nicht das Hauptproblem ist: jeder anständige Texteditor erlaubt Ihnen, die Kodierung zu wählen (wie die Fehlermeldung Ihnen sagt). Aber das wird dir nicht ein bisschen helfen, wenn die MessageBundle-Klasse darauf besteht, die Datei als ISO-8859-1 –

+0

OK cool thankx zu interpretieren. Ich hab es jetzt!!! – SmoothCriminel

0

Dies ist in erster Linie ein Editor Konfigurationsproblem. Wenn Sie in Windows arbeiten, können Sie den Text in einem Editor bearbeiten, der UTF-8 unterstützt. Notepad oder Eclipse-integrierter Editor sollte mehr als genug sein, vorausgesetzt, Sie haben die Datei als UTF-8 gespeichert. Unter Linux habe ich erfolgreich gedit und emacs verwendet. In Notepad können Sie dies tun, indem Sie auf "Speichern unter" klicken und die Codierung "UTF-8" auswählen. Andere Editoren sollten ähnliche Funktionen haben. Einige Editoren benötigen möglicherweise eine Änderung der Schriftart, um die Buchstaben korrekt anzuzeigen. Dieses Problem scheint jedoch nicht zu bestehen.

Mit diesem gesagt, gibt es andere Schritte zu beachten, wenn i18n für Arabisch ausgeführt wird. Unten finden Sie einige nützliche Links. Stellen Sie sicher, dass Sie native2ascii für die Eigenschaftendatei verwenden, bevor Sie sie verwenden, andernfalls funktioniert sie möglicherweise nicht. Ich habe viel Zeit verbracht, bis ich das herausgefunden habe.

Tomcat webapps

Using nativ2ascii with properties files

1

new String(ret.getBytes("ISO-8859-1"), "UTF-8"); für mich gearbeitet. Eigenschaftendatei, die in ISO-8859-1 Encoding gespeichert wurde.

Verwandte Themen