8

メッセージリソースバンドル(プロパティ)ファイルに「アラビア語」を書きたいのですが、保存しようとすると次のエラーが発生します。

「保存を完了できませんでした。一部の文字は「ISO-85591-1」文字エンコードを使用してマップできません。エンコードを変更するか、文字を削除してください...」

誰か案内してもらえますか?

私が書きたい:

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

プロパティファイルに「username」のアラビア語を書くにはどうすればよいですか?したがって、その国際化は機能します。

BR SC

4

7 に答える 7

8

http://sourceforge.net/projects/eclipse-rbe/

上記のEclipseIDEプラグインを使用して、Unicode変換を行うことができます。

于 2011-01-10T15:56:05.367 に答える
5

「プロパティ」のクラスリファレンスで説明されているように

load(Reader)/ store(Writer、String)メソッドは、以下に指定された単純な行指向の形式で、文字ベースのストリームとの間でプロパティをロードおよびストアします。load(InputStream)/ store(OutputStream、String)メソッドは、入出力ストリームがISO 8859-1文字エンコードでエンコードされていることを除いて、load(Reader)/ store(Writer、String)ペアと同じように機能します。このエンコーディングで直接表現できない文字は、Unicodeエスケープを使用して記述できます。エスケープシーケンスでは、単一の「u」文字のみが許可されます。native2asciiツールを使用して、プロパティファイルを他の文字エンコードとの間で変換できます。

于 2011-01-10T15:45:31.260 に答える
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());
于 2011-01-10T15:59:19.340 に答える
1

new String(ret.getBytes("ISO-8859-1"), "UTF-8");私のために働いた。ISO-8859-1Encodiingに保存されたプロパティファイル。

于 2014-09-02T07:27:35.493 に答える
0

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

そうは言っても、アラビア語でi18nを実行する際に考慮すべき他のステップがあります。以下にいくつかの便利なリンクがあります。使用する前に、プロパティファイルでnative2asciiを使用してください。使用しないと、機能しない場合があります。これを理解するまで、私は多くの時間を費やしました。

TomcatWebアプリケーション

プロパティファイルでのnativ2asciiの使用

于 2011-09-19T13:29:19.483 に答える
0

Eclipseを使用している場合は、「ウィンドウ->設定」を選択してから「コンテンツタイプ」でフィルタリングできます。次に、デフォルトのエンコーディングを設定できるはずです。この投稿の上部にこれを示すスクリーンショットがあります。

于 2011-01-10T15:53:02.020 に答える
0

他の回答で言及されているnative2asciiツールに加えて、コードで使用される変換機能を提供できるJavaオープンソースライブラリがあります

ライブラリMgntUtilsには、任意の言語の文字列を変換するユーティリティがあります(特殊文字や絵文字をUnicodeシーケンスに、またはその逆を含む)。

result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);

このコードの出力は次のとおりです。

\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World

ライブラリはMavenCentralまたはGithubにあります。Mavenアーティファクトとして提供され、ソースとjavadocが付属しています。

StringUnicodeEncoderDecoderクラスのjavadocは次のとおりです。

于 2019-05-13T10:21:35.143 に答える