Unicode文本通过java中的套接字

Din*_*ran 0 java sockets unicode utf-8

我在套接字编程中面临一个小问题(我相信).从非英语语言发送文本时,我得到了乱码的结果.经过对谷歌的大量研究,我做了一些修改.我改变getBytes()getBytes("UTF-8")并尝试发送一些阿拉伯语文本.

在本地连接套接字时,它工作正常.我看到了我所期待的阿拉伯语文本.但是在线测试时,结果显示奇怪/乱码.

这是我试过的文字:

"مرحبا"(这是"hello"的阿拉伯文字),向我显示为"Ù......Ø±ØØ¨Ø§"

请帮我解决这个问题.

tch*_*ist 5

这是我用过的一些Java代码,用于在一对字节流上设置流编码,但你可以对单例执行相同操作,至少假设您使用的是TCP流套接字而不是UDP数据报.

    Process
    slave_process = Runtime.getRuntime().exec("cmdname -opts cmdargs");

 OutputStream
 __bytes_into_his_stdin  = slave_process.getOutputStream();

 OutputStreamWriter
   chars_into_his_stdin  = new OutputStreamWriter(
                             __bytes_into_his_stdin,
         /* DO NOT OMIT! */  Charset.forName("UTF-8").newEncoder()
                         );

 InputStream
 __bytes_from_his_stdout = slave_process.getInputStream();

 InputStreamReader
   chars_from_his_stdout = new InputStreamReader(
                             __bytes_from_his_stdout,
         /* DO NOT OMIT! */  Charset.forName("UTF-8").newDecoder()
                         );

 InputStream
 __bytes_from_his_stderr = slave_process.getErrorStream();

 InputStreamReader
   chars_from_his_stderr = new InputStreamReader(
                             __bytes_from_his_stderr,
         /* DO NOT OMIT! */  Charset.forName("UTF-8").newDecoder()
                         );
Run Code Online (Sandbox Code Playgroud)