ウォンツテック

そでやまのーと

Javaのコード内部での文字コードは通常Unicode(UTF)になっているが、
Servlet経由で文字を取得するとクライアントブラウザの文字コード
セットされている。したがって、以下のようにUnicode形式に変換した
方が良いかも。。(まだ良くわかってない)

public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {

    String sendMessage = req.getParameter("message");

    sendMessage = new String(sendMessage.getBytes("iso-8859-1"), "Shift_JIS");
}

またsocketの入出力に良く使うInputStreamReader, OutputStreamWriterは
Javaの内部コードであるUnicodeをどのコードに変換するかという使い方で
あり、任意のコードを任意のコードに変換する事は出来ない。

bw = new BufferedWriter(
         new OutputStreamWriter(client.getOutputStream(), "SJIS"));

UnicodeSJISに変換して出力

br = new BufferedReader(
         new InputStreamReader(socket.getInputStream(), "SJIS"));
SJISUnicodeに変換して入力