java 中文!.............. String stt ="LOGON hi";String stt2 = "您";System.out.println(stt+stt2); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改一下这一句就可以了byte[] bytes = stt2.getBytes("gbk");原因可以看JAVA的getBytes的帮助:Encodes this String into a sequence of bytes using the named charset..... 还是不行...具体是这样的.我打开一个socket,使用它传送一个 中文到服务器,但服务器接收后输出却是乱码 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String str = br.readLine(); 这样解决,保证没有任何问题。你在client端用writeUTF把串写进去。在Server端用readUTF读出来。如果还有问题,再告诉我。另外,你的client端和Server端的操作系统都分别什么? 怎么找你啊??目前都是windows 2000做完后, server 会换成 linux ..client 可能两种都有,主要是windows我试下. 你的例子我刚才试过了,结果应该是:LOGON hi?汉字应该是无法显示的,英文无论如何都应该是正确的。分析一下你的代码:String stt ="LOGON hi"; String stt2 = "您";//此处编码为Unicode byte[] bytes = stt2.getBytes("ISO8859_1");//此处编码为ISO-8859-1 stt2 = new String(bytes,"GBK");//此处编码为GBK如果是中文操作系统,javac在编译的过程为:读java文件(GBK编码)->编译(Unicode编码)->class文件(UTF编码);你的程序在运行时的编码:class文件(UTF编码)->运行(Unicode编码)->中间结果(ISO-8859-1)->输出(GBK).中间多了一层Unicode编码到ISO-8859-1的转换,问题就处在这一层。GBK和Unicode转换时是一一对应的,如果没有ISO-8859-1这一层,Unicode最终输出要转换到GBK,输出汉字,这是我们程序默认的行为,若有这一层,Unicode在转型为ISO-8859-1时就会为每个字节高位加两个0,ISO-8859-1再转为GBK时按照另一种规则,就会出现目标编码在GBK中找不到的情况。解决问题:可以采用javac -encoding ISO-8859-1 java源程序 来解决。欢迎讨论。 搭建环境,大家帮帮忙 新手请教:关于路径的问题 ServerSocket问题请教 问个执行步骤的问题! 关于java中的类型转换.求教中. 谁有“协议封装”的例子? 请教各位大虾,如何写一个只有一个实例的类! 有个简单问题请各位大哥帮忙, 如何隐藏某列的显示? 请问怎么样调整JDialog在屏幕的位置?? 看看这几个题怎么答,谢了!!!!!!!!!!! servlet输出对象时,content type设成什么类型?
byte[] bytes = stt2.getBytes("gbk");
原因可以看JAVA的getBytes的帮助:
Encodes this String into a sequence of bytes using the named charset.....
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr); String str = br.readLine();
你在client端用writeUTF把串写进去。在Server端用readUTF读出来。如果还有问题,再告诉我。另外,你的client端和Server端的操作系统都分别什么?
client 可能两种都有,主要是windows我试下.
LOGON hi?
汉字应该是无法显示的,英文无论如何都应该是正确的。
分析一下你的代码:String stt ="LOGON hi";
String stt2 = "您";//此处编码为Unicode byte[] bytes = stt2.getBytes("ISO8859_1");//此处编码为ISO-8859-1
stt2 = new String(bytes,"GBK");//此处编码为GBK如果是中文操作系统,javac在编译的过程为:
读java文件(GBK编码)->编译(Unicode编码)->class文件(UTF编码);
你的程序在运行时的编码:
class文件(UTF编码)->运行(Unicode编码)->中间结果(ISO-8859-1)->输出(GBK).
中间多了一层Unicode编码到ISO-8859-1的转换,问题就处在这一层。GBK和Unicode转换时是一一对应的,如果没有ISO-8859-1这一层,Unicode最终输出要转换到GBK,输出汉字,这是我们程序默认的行为,若有这一层,Unicode在转型为ISO-8859-1时就会为每个字节高位加两个0,ISO-8859-1再转为GBK时按照另一种规则,就会出现目标编码在GBK中找不到的情况。
解决问题:可以采用javac -encoding ISO-8859-1 java源程序 来解决。
欢迎讨论。