У меня возникла проблема с кодировкой, из-за которой я не могу найти правильное решение.
У меня есть сервер C # TCP, работающий как оконная служба, которая получает и отвечает на XML, проблема сводится кпри передаче в выводе специальных символов, таких как испанские символы с акцентами (например, á, é, í и др.).
Ответ сервера кодируется как UTF-8, а клиент java читает с использованием UTF-8.Но когда я печатаю его вывод, символ совершенно другой.
Эта проблема возникает только в клиенте Java (клиент C # TCP работает как положено).
Ниже приведен фрагмент кода сервера, который показываетпроблема с кодировкой: C # Server
byte[] destBytes = System.Text.Encoding.UTF8.GetBytes("á");
try
{
clientStream.Write(destBytes, 0, destBytes.Length);
clientStream.Flush();
}catch (Exception ex)
{
LogErrorMessage("Error en SendResponseToClient: Detalle::", ex);
}
Java-клиент:
socket.connect(new InetSocketAddress(param.getServerIp(), param.getPort()), 20000);
InputStream sockInp = socket.getInputStream();
InputStreamReader streamReader = new InputStreamReader(sockInp, Charset.forName("UTF-8"));
sockReader = new BufferedReader(streamReader);
String tmp = null;
while((tmp = sockReader.readLine()) != null){
System.out.println(tmp);
}
Для этого простого теста вывод шоу:
ß
Я провел некоторое тестированиераспечатывать байт [] на каждом языке и в то время как на C # выводить как: 195, 161
В байте java [] читать печатать как: -61, -95
Придется ли этоделать со Подписанным (Java), Беззнаковым (C #) байтового типа?.
Любая обратная связь с благодарностью.