1

テキストファイルを読み取り、データからxmlファイルを作成するJavaアプリケーションをUbuntu Linuxで作成しています。一部のテキストには、次のコードを使用してストレート アポストロフィと引用符に変換するカーリー アポストロフィと引用符が含まれています。

dataLine = dataLine.replaceAll( "[\u2018|\u2019]", "\u0027" ).replaceAll( "[\u201C|\u201D]", "\u005c\u0022" );

これは問題なく動作しますが、jar ファイルを Mac OSX マシンに移植すると、アポストロフィーと引用符で囲まなければならない場所に 3 つの疑問符が表示されます。同じコード行を使用して変換を行い、入力用に同じテスト ファイルを使用して、Mac でテスト アプリケーションを作成したところ、問題なく動作しました。Linux マシンで作成された jar ファイルが Mac で正しく機能しないのはなぜですか? Javaはクロスプラットフォーム互換であるはずだと思っていました。

4

1 に答える 1

2

Chances are you'tr not reading the file correctly to start with. You haven't shown how you're reading the file, but my guess is that you're just using FileReader, or an InputStreamReader without specifying the encoding. In that case, the default platform encoding is used - and if that's not the actual encoding of the file, you won't be reading the right characters. You should be able to detect that without doing any replacement at all.

Instead, you should use a FileInputStream and wrap it in an InputStreamReader with the correct encoding - which is likely to be UTF-8 as it's XML. (You should be able to check this easily.)

于 2013-09-25T22:51:24.103 に答える