2016-04-18 5 views
0

私は、ディスク上のファイルから読み込んで必要な値を返すjava webappを持っています。ディスク上のファイルには、UTF-8文字が含まれています。Tomcatのテキストファイルエンコーディング

ファイルの内容の例:

lähedus teeb korterist atraktiivse üüriobjekti välismaalastele 

Webアプリケーションがlocalhost*上で実行され、その後、サーブレットは、ディスクとリターンからの読み込み:

lähedus teeb korterist atraktiivse üüriobjekti välismaalastele 

私は別のサーバー上で同じアプリケーションを実行すると、同じリクエストでこれが返されます:

l??hedus teeb korterist atraktiivse ????riobjekti v??lismaalastele 

これは純粋にエンコードです私はそれを解決する方法を知らない。私が試してみました何

  • を私は設定/ server.xmlの

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" 
    URIEncoding="UTF-8"/> <!-- THIS PART 
    

にこれを追加しかし、それは助けにはなりませんでした。 サーバでも同じように動作させるには、設定を変更する必要がありますか? ありがとう!私は、JSON文字列を含むサーバー上のテキストファイルから読んでい

EDIT

。 私は、Java BufferReaderを使用してコンテンツを読み取ります。コメントで言及したように、この問題はローカルホストで同じことが働くので、読者が原因ではありません。

jsonの文字列をフラッシュするサーブレット経由で応答を送信しています。再び読者と同じ話。

リクエスト(ブラウザ、アンドロイドなど)を行うクライアントに疑問符が表示されます。

+0

URIエンコーディングはファイルの* content *と何が関係していますか?私はあなたが現時点ではっきりしていないのではないかと心配しています。 –

+0

ファイルの内容は関係ありません。私はちょうど元のデータが疑問符を持っていないことを明確にしたかった – KasparTr

+0

なぜあなたは "ディスク上のファイルにはUTF-8文字が含まれています"と言ったのですか?問題が何であるかはまだ分かりません。 「それは私に疑問符を与える」という意味はどういう意味ですか?あなたの質問に本当に明白であるようにもっと努力してください。 –

答えて

1

あなたのローカルファイルはUTF-8であるようですが、一部のシングルバイトエンコーディングに間違った変換があります。 1つの特別なcharのマルチバイトシーケンスが2つの変換不可能な文字(?)を生成するため、

アプリケーションはエンコーディングを指定せずにシステムのエンコーディングを使用してそれを読み取ります。それはあなたが望むものではありません。

誤った読み上げコードを見つける必要があります。しばしば、エンコードを追加できるオーバーロードされたメソッドがあります。悪名高いFileReaderしかし、そのユーティリティクラスは常にデフォルトのエンコーディングを使用します。

  • InputStreamReaderの
  • 新しいString
  • するString.getBytes
  • 良い順スキャナ

、おそらくここではない場合:指定する必要があり、そのテキストを生成する任意の応答の発生を確認してくださいcontent-typeの文字セット。

+0

ありがとう、私はあなたの指示を使用してデバッグしようとします。うん、システムエンコーディングは私のマシンとサーバーで異なるかもしれませんし、それで読者の間違いかもしれません:P – KasparTr