我尝试编写一个从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
但是没有用(或者我做错了)。
有什么想法吗?
答案 0 :(得分:2)
好的,答案是: 在Windows端:
byte[] msg = Encoding.UTF8.GetBytes(buffer + "\n");
在Android方面:
InputStreamReader isr = new InputStreamReader(is, "UTF-8");