我在c ++端有一段代码可以传递这样的字符串:
char someName[100]="Some String here";
send(sock,someName,sizeof(someName),0);
另一方面,我有一个java代码,正在查找这样的字符串消息:
DataInputStream dIn= new DataInputStream(SOCK.getInputStream());
String filename=dIn.readUTF(); //Looks for "Some String here"
代码不会继续并提供UTFDataFormatException。所以我基本上都在寻找c ++ someName到UTF-8格式的转换,所以两端都会很开心!
谢谢!
修改 我尝试在java代码上使用BufferedReader,得到类似的东西:
‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO 〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡ AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜
答案 0 :(得分:0)
DataInputBuffer.ReadUTF()读入以modified utf-8编码的字符串,这使得它不适合读取未使用DataOutputBuffer.WriteUTF()编码的数据。
此外,您的C ++程序发送一个填充零的固定长度字符串。当接收器不期望这种情况时,这也会引起问题。
C ++ 11还支持UTF-8字符串文字,请参阅here。
答案 1 :(得分:-6)
将数据写入C / C ++应用程序的文本文件,并从Java应用程序中读取该文本文件。