クライアントが情報を要求し、サーバーから応答を受け取るJavaサーバーを作った。私はクライアントに情報を送信するためにBufferedWriter
を使用しています。情報はヘブライ語です。問題は、サーバーがヘブライ語を彼に送ると、クライアントはちょっとばかげているということです。私はすでにISO-8859-8、UTF-8、Unicodeなどの異なるエンコーディングを試みましたが、どれも役に立たなかった。私はチェックを行い、サーバー側では、サーバーの文字列は、ヘブライ語でうまく、私はそれもヘブライ語でファイルに保存し、それが働いた。私は本当に何をすべきかわからない。私はここでほとんどすべての解決策を試したが、何も働かなかった。ヘブライ語で価値を得ようとしているときに、クライアント側でぎこちなくなっていく
答えて
BufferedWriter
を使用しないでください。ちょっと変わったところで、UTF-8エンコーディング(例:ラテン文字以外の文字)を書きたい場合は、DataOutputStream
変数を使用するだけで済みますが、これは方法writeUTF()
を有する。 これは次のようになります。
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeUTF(someString);
out.flush();
受信側が長さ+データ形式のデータを受信することを期待し、[変更されたUTF-8変種*がJVMおよびJavaクラスファイルによって内部的に使用されている](https:// docs。 oracle.com/javase/8/docs/api/java/io/DataInput.html#modified-utf-8)。おおよそ、クライアントが 'DataInputStream.readUTF()'でそれを読み取った場合に限ります。 Webブラウザなどの汎用クライアントでは正しくありません。 –
@JohnBollingerそれは 'BufferedReader'で動作しましたが、とにかく私の場合はアンドロイドアプリでした。私はそれが他のユーザーには便利だと思います。 –
これで作業するコードが少なくとも用意されましたので、汎用のUTF-8文字ストリームの場合、UTFを使用するように設定された 'OutputStreamWriter'にソケットの' OutputStream'をラップすることをお勧めします-8。 'OutputStreamWriter'と' OutputStreamReader'は文字ストリームとバイトストリームの間のJavaの標準ブリッジです。 –
- 1. WebClient.DownloadStringがぎこちなくなっています
- 2. ブラウザでDOCXを開こうとするときにぎこちなくなるようにする
- 3. 日付が過去のクライアント側とサーバー側でないことを確認してください
- 4. ちょうどmysqlのクエリを正しく得ることができない
- 5. モバイルビューでは、Navbar内のログインドロップダウンがぎこちなく変わっています。
- 6. クライアント側とサーバー側が正しく動作しない
- 7. ぎこちなさを避けようとしているCSSアニメーション
- 8. Csvヘブライ語のテキストがうまくいかない
- 9. SQLで最も少なくて高価な本の価値を得るには?
- 10. このようなように私は、拡張リストビューとして働くrecyclerViewを持っているアンドロイドRecyclerViewで
- 11. 小さな画面でボタンがぎこちなくなる
- 12. なぜ私は値ではなくタイトルを求めるときに「価値が得られない」と報告していますか?
- 13. DBPediaからヘブライ語を取得できない
- 14. CSVファイルをぎこちなく読む
- 15. Pythonでregexによってどのように価値を得ることができますか?
- 16. 「this」とクリックハンドラが一緒にうまくいっていないようです
- 17. クライアント側でExcelファイルのレコード数を取得しようとしています
- 18. OS言語とは異なるデフォルト言語を使用しているときにローカライズが正しくない
- 19. ヘブライ語で働くためにhtmlParseを取得するには?
- 20. DropDownListクライアント側の検証は、そうであってはならないときに検証します。 (MVC3、Razor)
- 21. いくつかのUserControlを追加するときにぎこちないアニメーションを避けるには?
- 22. 新しいブラウザウィンドウを開くことなく、Selenium 2を使ってHTMLデータを取得できますか?
- 23. この「next」、「previous」スクリプトを改善して、少なくとも3になるようにしてください
- 24. socket.ioサーバーがクライアントからオンラインになっていることを確認してください。
- 25. このテキストボックスをクリックすると大きくなりますが、クリックするとどのようにして正常に戻っていくのですか?
- 26. 私はこのようなデータフレーム持っているいくつかの数値
- 27. サーバを叩くことなくブラウザのクライアント側を更新する
- 28. VBAを使用してGoogle検索にどのように価値を置くことができますか?
- 29. は、チェックボックスの値を取得し、私はこのようないくつかのコードを持っている
- 30. チェックボックスがオフになっていることを確認してください。
エンコードの問題には注意が必要です。特に、クライアントとサーバーはエンコーディングに同意しなければならず、関連するすべての文字をエンコードできるものでなければなりません(私はUTF-8を推奨します)。それを超えて、私たちは[mcve]なしではほとんど言えません。 –
ブラウザのデベロッパーツールを使用して、レスポンスのContent-Typeヘッダーと、実際にブラウザで選択された文字エンコーディングを確認します。彼らは何ですか?または、これはWebアプリケーションではなく、カスタムクライアント/サーバープロトコルですか?その場合、なぜあなたはサーバーを疑うのですか?クライアントでどのようにデコードを処理していますか? – erickson
クライアントとは何ですか?ブラウザ?カスタムアプリですか? –