套接字输入流和Unicode

时间:2014-10-10 15:15:22

标签: android sockets unicode inputstream

我尝试编写一个从Windows计算机向Android手机发送文本的应用程序。 我发送的文字可以是英文或希伯来文(例如)。连接是通过Socket。我在Windows端使用的代码(Visual Studio 2012):

String buffer = // Some text
// Encode the data string into a byte array.            
byte[] msg = Encoding.ASCII.GetBytes(buffer + "\n");
// Send the data through the socket.
int bytesSent = socketSender.Send(msg);

在Android方面:

//After I establish the Socket
String text = "";
InputStream is = socket.getInputStream();    
InputStreamReader isr = new InputStreamReader(is);
BufferedReader in = new BufferedReader(isr);
while ((inputText = in.readLine()) != null)
{
     text = inputText;
}

发送英文文本时,这一切都非常有效。 当我尝试发送希伯来语文本时,我将替换为此行:

byte[] msg = Encoding.Unicode.GetBytes(buffer + "\n");

但在Android方面,我无法“阅读”它。 我试图使用CharsetEncoder但是没有用(或者我做错了)。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

好的,答案是: 在Windows端:

byte[] msg = Encoding.UTF8.GetBytes(buffer + "\n");

在Android方面:

InputStreamReader isr = new InputStreamReader(is, "UTF-8");