当前位置: 技术问答>java相关
Unicode乱码问题!帮我,不然我会死掉!
来源: 互联网 发布时间:2015-05-23
本文导语: 我知道java里面的char和String都是用的Unicode编码方式,而且FlashMX也适用的Unicode,所以当我用Java写的XML Socket Server和flashMX写的Client通信的时候,应该不会有什么问题吧?但是,我却遇到了乱码,想不通呢!:mad: :mad: 其...
我知道java里面的char和String都是用的Unicode编码方式,而且FlashMX也适用的Unicode,所以当我用Java写的XML Socket Server和flashMX写的Client通信的时候,应该不会有什么问题吧?但是,我却遇到了乱码,想不通呢!:mad: :mad:
其中一部分主要java代码如下:
[code]
in = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
......
char charBuffer[] = new char[1];
while(in.read(charBuffer,0,1) != -1 && this.ip==null) {
StringBuffer stringBuffer = new StringBuffer(256);
while(charBuffer[0] != ''){
stringBuffer.append(charBuffer[0]);
in.read(charBuffer, 0 ,1);
}
String tempStr=stringBuffer.toString();
System.out.println("the message is:"+tempStr);
}
.....
[/code]
Flash中的ActionScript如下:
[code]
......
MyMXLSocket.send(new XML(内容));
[/code]
但是java窗口的输出为:
---------------------------
the message is:乱码
---------------------------
郁闷呢:(
有谁遇到过这样的问题啊,能帮帮我吗?
thanx in advance!:cry:
其中一部分主要java代码如下:
[code]
in = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
......
char charBuffer[] = new char[1];
while(in.read(charBuffer,0,1) != -1 && this.ip==null) {
StringBuffer stringBuffer = new StringBuffer(256);
while(charBuffer[0] != ''){
stringBuffer.append(charBuffer[0]);
in.read(charBuffer, 0 ,1);
}
String tempStr=stringBuffer.toString();
System.out.println("the message is:"+tempStr);
}
.....
[/code]
Flash中的ActionScript如下:
[code]
......
MyMXLSocket.send(new XML(内容));
[/code]
但是java窗口的输出为:
---------------------------
the message is:乱码
---------------------------
郁闷呢:(
有谁遇到过这样的问题啊,能帮帮我吗?
thanx in advance!:cry:
|
我的想法是:InputStreamReader构造时如果采用缺省的编码(即不写编码参数),以系统编码为准(一般是GB2312),很显然从Flash传来的数据一定是ISO编码的,所以从第一行编码就错了in = new BufferedReader(new InputStreamReader(socket.getInputStream())); ISO-》GB2312
改成in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"ISO_8851"));可以试试
改成in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"ISO_8851"));可以试试
|
Flash段是什么端呀
我那个是文本文件,所以就在文本编辑器中改的,直接另存为就可以了
下面的编码格式选择ANSI就可以了
我不太清楚你的是什么意思
我感觉如果是从文本中读的话,就直接改文本的编码格式就可以了
如果不是,就查找一下论坛上的其他文章,挺多的改变字符编码格式的
我那个是文本文件,所以就在文本编辑器中改的,直接另存为就可以了
下面的编码格式选择ANSI就可以了
我不太清楚你的是什么意思
我感觉如果是从文本中读的话,就直接改文本的编码格式就可以了
如果不是,就查找一下论坛上的其他文章,挺多的改变字符编码格式的
|
你可以有类似下面的方法试试
String str;
bye[] bytesforStr[512];
FileInputStream infile=new FileInputStream("文件路径名");
bytesforStr = infile.read(512);
str = new String(byetsforStr);
一上代码,可以将内容按照字节形式读出,然后转换为字符串(字符串用的是Unicode--转换过程是自动的)
解决思路是,无论什么代码,先按照最基本的字节读取,然后再转换,最简单的就是Unicode的转换
上述代码也可以倒过来
先以Unicode方式读取,然后用byetsforStr = str.getbytes();将Unicode转换为byte
String str;
bye[] bytesforStr[512];
FileInputStream infile=new FileInputStream("文件路径名");
bytesforStr = infile.read(512);
str = new String(byetsforStr);
一上代码,可以将内容按照字节形式读出,然后转换为字符串(字符串用的是Unicode--转换过程是自动的)
解决思路是,无论什么代码,先按照最基本的字节读取,然后再转换,最简单的就是Unicode的转换
上述代码也可以倒过来
先以Unicode方式读取,然后用byetsforStr = str.getbytes();将Unicode转换为byte
|
String name1=new String(request.getParameter("user_id").getBytes("ISO8859_1"));
试试把你得到的东西像上面一样再包装一下
试试把你得到的东西像上面一样再包装一下
|
我想有点难度了,程序员们很少去弄flashMX的,何况它还那么的新,呵呵
就算是actionscript,也不会有太多人有用它和java打交道的案例吧
兄弟,努力啊,精神上支持你 :)
就算是actionscript,也不会有太多人有用它和java打交道的案例吧
兄弟,努力啊,精神上支持你 :)
|
老兄可以试着先用escape()处理一下先,看是不是能解决问题!
|
我猜想这个跑在浏览器里的东东(flash)应该和浏览器一样处理,(关于乱码问题)
在tomcat中使用楼上的方法转一下!
在tomcat中使用楼上的方法转一下!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。