我的socket接收下来的中文怎么都变成了?号了 我读文件的时候没有使用什编码方式阿。我是用read(buf),buf是个byte[],是把这个buf转化成char[]再传输出去的,和这个有关系吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不访问用new String(byte[],编码);如iso8859-1,gbk试试我的java与c++通信就是这样转换的中文。 kypfos(社会主义好) 能不能把你的例子给我参考一下,我现在这个问题很急阿。 [email protected] char buffer[MAX_BUFFER_SIZE]; int len=socket->Receive(buffer,MAX_BUFFER_SIZE-1); if (len<1) { AfxMessageBox("接收信息出现异常!"); return; } java内部使用Unicode编码,应该利用其将读入的字符编码转换为输出时所用平台的编码。如:...Reader r = new BufferedInputStream(new InputStreamReader(new FileInputStream(inFile)));Writer w = new BufferedOutputStream(new OutputStreamReader(new FileOutputStream(OutFile)));Char[] buffer = new byte[4096];int len;while((len = r.read(buffer)) != -1){ w.write(buffer,0,len);}... charset错误,java一般默认为ISO8859_1,但window系统一般是用GB2312,所以就会出现乱码问题,使用强制编码转换可以解决问题 如果是c写的socket流,我接收后要显示中文应该怎么转化? galaxyseeker(星空) 你给的例子也没有怎么解决阿? 这不关SOCKET的事情,关键还是 byte[] 到 char[]或String 的转换过程。 JAVA在执行过程中,内部是统一以 UNICODE 来表示字符的; 但 字符 除了 UNICODE 编码外,还有很多很多的编码(ISO-8859-1,GB2312……), 当 JAVA 将 byte[] 转为 String 时,它要将你的字符编码转化为 UNICODE,但是它本身不知道你的编码是什么,所以你必须自己指定。如果你不指定的话,它会用SYSTEM的默认属性来处理——一般是你操作系统所用的字符编码,但这样并不表示它就是正确的,具体是什么还是自己来指定才行。 PrintStream stream=new PrintStream(socket.getOutputStream());FileInputStream fs=new FileInputStream("PhoneBook.txt");DataInputStream ds=new DataInputStream(fs);String s=ds.readLine();stream.println(s); // s是中文,则会出现??的乱码,应该怎样改?? 我试过读文件时候是用的char[],接收的时候用的是byte[],这个时候我发现读出的长度,和接收的不一样长。是不是java中一个中文放入一个char,但用byte[]时是两位阿。 果然不出所料,一个中文在java中,char[]是一位,byte[]是两位。所以的问题就在这儿了 中文用Byte传,的确要两位的。char是short int占两位。 linux学习 JTABLE 表头不显示问题 有没有办法禁止字符转义 各位前辈看看, 谢谢! 问一个关于日期的算法,谢谢了,帮帮忙????????? servlet的一个简单问题 java应用打jar包后,本地可运行,别人机子不能运行 有关arraylist中indexOf()使用的问题 大家都用什么样的包来开发FTP啊? (重发)请大虾们百忙之中帮看一下这段代码哪里有问题? 用正则表达式查找时如何不区分大小写? 哪里有下载100MB大小的ip地址大全?
能不能把你的例子给我参考一下,我现在这个问题很急阿。 [email protected]
int len=socket->Receive(buffer,MAX_BUFFER_SIZE-1);
if (len<1)
{
AfxMessageBox("接收信息出现异常!");
return;
}
如:
...
Reader r =
new BufferedInputStream(new InputStreamReader(new FileInputStream(inFile)));
Writer w =
new BufferedOutputStream(new OutputStreamReader(new FileOutputStream(OutFile)));Char[] buffer = new byte[4096];int len;while((len = r.read(buffer)) != -1){ w.write(buffer,0,len);}
...
但 字符 除了 UNICODE 编码外,还有很多很多的编码(ISO-8859-1,GB2312……),
当 JAVA 将 byte[] 转为 String 时,它要将你的字符编码转化为 UNICODE,但是它本身不知道你的编码是什么,所以你必须自己指定。如果你不指定的话,它会用SYSTEM的默认属性来处理——一般是你操作系统所用的字符编码,但这样并不表示它就是正确的,具体是什么还是自己来指定才行。
FileInputStream fs=new FileInputStream("PhoneBook.txt");
DataInputStream ds=new DataInputStream(fs);String s=ds.readLine();
stream.println(s); // s是中文,则会出现??的乱码,应该怎样改??