2011-01-10 13 views
6

私はメッセージ・リソース・バンドル(プロパティ)ファイル内の「アラビア語」を書きたいが、私はそれを保存しようとすると、私はこのエラーを取得:Java:プロパティファイルに "Arabic"を書き込む方法は?

ISOを「保存は一部の文字を使ってマッピングすることはできません 完了できませんでした」 -85591-1 "文字エンコーディング。エンコーディングを変更するか文字を削除するか..."

誰でもご案内できますか?

私が書きたい

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

私はプロパティファイルで、 "ユーザー名" のアラビア語を書く必要がありますどのように?だから、その国際化が働く..

BR SC

答えて

8
+0

ありがとうございます。このプラグインはIBM RADと連携しますか?そして、私はそれに "アラビア語"を書いて保存することができます... BR SC – SmoothCriminel

+0

それは感謝をたくさん働いた! – SmoothCriminel

+0

非常にいいプラグイン、ありがとうございました –

5

"プロパティ"

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

のクラス参照で説明したようにEclipseを使用している場合は、「ウィンドウを選択することができます - >設定"コンテンツタイプ"をフィルタリングします。次に、デフォルトのエンコーディングを設定できるはずです。 this postの上部にこれを示すスクリーンショットがあります。あなたはあなたのためのUnicode変換を行うためのEclipse IDEについては、上記のプラグインを使用することができます

+0

これはどのように役立つでしょうか? – jarnbjo

+1

これは、同じようなことをしようとしているときに同じエラーメッセージが発生したときに、プロパティファイルのエンコーディングを設定する方法です。 – smcmahon

4

プロパティベースのリソースバンドルは、デフォルトのローディング機構を使用するためにISO-8859-1でエンコードする必要がありますが、私は正常にUTF-8でエンコードされたプロパティファイルを許可するようにこのコードを使用しています

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")); 
    } 

} 

は、その後のコース、あなたのIDEでUTF-8にファイル自体のエンコーディングを変更する必要があり、このようにそれを使用することができます:

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

ありがとうございますが、私はアラビア語で書かれたテキストを保存できるエディタについて話しています。 – SmoothCriminel

+0

@SmoothCriminel:エディタが主な問題ではないことを伝えています。まともなテキストエディタであれば、エンコーディングを選択することができます(エラーメッセージが示すように)。しかし、MessageBundleクラスがファイルをISO-8859-1 –

+0

OKのクールな感謝のように解釈しようとしているとき、それはあなたを少し助けません。分かりました!!! – SmoothCriminel

0

これは主に、エディタの設定の問題です。 Windowsで作業している場合は、UTF-8をサポートするエディタでテキストを編集できます。 UTF-8としてファイルを保存しておけば、メモ帳やEclipseの組み込みエディタで十分です。 Linuxでは、geditとemacをうまく使っています。メモ帳で、[名前を付けて保存]ボタンをクリックし、[UTF-8]エンコーディングを選択すると、これを行うことができます。他のエディタも同様の機能を持つ必要があります。文字を正しく表示するためにフォントの変更が必要なエディタもありますが、この問題はないようです。

これは、アラビア語でi18nを実行するときに考慮する必要がある他の手順があります。以下にいくつかの便利なリンクがあります。それを使用する前に必ずプロパティファイルでnative2asciiを使用してください。そうしないと、動作しない可能性があります。私はこのことを考え出すまでに多くの時間を費やしました。

Tomcat webapps

Using nativ2ascii with properties files

1

new String(ret.getBytes("ISO-8859-1"), "UTF-8");私のために働きました。 プロパティファイルはISO-8859-1エンコーディングで保存されています。

関連する問題