4

なぜJSFプロパティファイルはEclipseで非ASCII文字を受け入れないのでしょうか?

「messages.properties」という名前のプロパティファイルがいくつかあります。非ASCII文字の場合はUnicodeでエスケープされた文字で書き込む必要があります。例:

title=\u01af\u0020\u0a3f0
header=\u0ff0\u0020\u0ab1

これは、顧客が通常のテキストエディタを使用してこれらのプロパティファイルを編集できないことを意味します。

解決策はありますか?

4

3 に答える 3

3

java.util.Properties.load(InputStream)これは、 ISO-8859-1を使用していることに起因しています。

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

それは何年もの間問題でした。エンコーディング変換を行うカスタムタグを実装することでストラットで解決しましたが、一般的には面倒です。

Java 6では、Properties.load(Writer)UTF-8で正常に動作するが導入されていますが、まだ広く採用されていないようです。

AnyEditツールを使用してUnicode表記との間で変換することをお勧めします。

エンドユーザーに関しては、プロパティファイルを編集する場合(奇妙に聞こえます)、好きな文字を書いて、後でnative2acii(またはそのラッパー)を使用してファイルを変換することができます。

于 2010-04-08T18:16:41.280 に答える
1

これは、Eclipse 4.2 (Juno、2012) 以降では必要ありません。組み込みのプロパティー・ファイル・エディターを使用すると、Eclipse がこれを透過的に処理します。値は UTF-8 で表示され、受け入れられますが、暗黙のうちに\uXXXXフォーマットに変換されます。これには、Git プラグインと組み合わせるといくつかの奇妙な副作用があることに注意してください (マージ中に古い行が削除されるなど)。プル/プッシュする前にすべてのプロパティ ファイルを閉じると、最適に機能します。

まだ Eclipse 4.x を使用していない場合は、クラスの javadoc でnative2ascii説明されているように、JDK インストール ディレクトリのフォルダーにあるツールを使用/binして、UTF-8 プロパティ ファイルを ASCII プロパティ ファイルに変換することを検討してください。java.util.Properties

「元の」プロパティ ファイルを保持し (たとえば、.utf8拡張子を付けます)、バッチ/シェル ファイルを使用して次のように変換できます。

cd c:\path\to\properties\files
c:\path\to\jdk\bin\native2ascii.exe -encoding UTF-8 text_cs.properties.utf8 text_cs.properties
c:\path\to\jdk\bin\native2ascii.exe -encoding UTF-8 text_ja.properties.utf8 text_ja.properties
c:\path\to\jdk\bin\native2ascii.exe -encoding UTF-8 text_zh.properties.utf8 text_zh.properties
# ここにさらにプロパティ ファイルを追加できます。

この方法では、ファイルを編集し.utf8てバッチ/シェル スクリプトを 1 回実行するだけで、ネイティブ文字を\uXXXX. このブログエントリも参照してください。

以下も参照してください。

于 2010-04-08T21:26:37.003 に答える
-2

.properties ファイルを UTF-8 形式で保存するだけでうまくいきます。

于 2015-07-20T07:19:27.580 に答える