2015-05-03 5 views
1

Я создал примитивный многоклиентский чат с графическим интерфейсом swing. Все работает нормально, пока оба человека пишут из одной ОС. Если один из них пишет из Windows, а другой из OS X, кодировка некоторых специальных символов гаснет. (Я из CZE, мы используем символы как š, ě, č, ř, ž ...). Я долго искал, но не нашел ничего, что могло бы помочь.Java-кодировка от OS X до Windows

У меня есть вход и выход определяется как:

in = new BufferedReader(new InputStreamReader(soc.getInputStream())); 
out = new PrintWriter(new OutputStreamWriter(soc.getOutputStream())); 

, где Soc является гнездо используется для подключения к серверной стороне.

Процесс отправки так просто, как:

out.println(message); 

где сообщение является String, который я получил от JTextArea путем вызова метода .getText()

Я знаю, почему эта проблема возникает, но я не смог найти разумного решения. Любая помощь будет оценена по достоинству.

Благодаря

ответ

1

При чтении символов данных от ввода/OutputStreams, это хорошая практика, чтобы всегда указывать кодировку. В противном случае используется стандартная кодировка платформы (что может быть не одинаковым для всех систем).

in = new BufferedReader(new InputStreamReader(soc.getInputStream(), StandardCharsets.UTF_8)); 
out = new PrintWriter(new OutputStreamWriter(soc.getOutputStream(), StandardCharsets.UTF_8)); 
+1

+1 от меня, но я хотел бы подчеркнуть, что вы должны использовать UTF-8 (как показано на примере) в качестве стандартной кодировки. – Bill

+0

Простота и удобство, просто то, что мне нужно. Благодаря! – Gex

Смежные вопросы