把它改为ANSI就没问题了
正常来说用Writer和Reader不应该出现这种乱码的问题的
不过我以前确实遇到过这样的现象
参照http://www.csdn.net/expert/topic/658/658351.xml?temp=.7225305
希望能对你有所帮助

解决方案 »

  1.   

    嗯,我看了那个帖子,但是怎样改为ANSI啊?在java端转换还是Flash端(Flash段不好改)?
      

  2.   

    Flash段是什么端呀
    我那个是文本文件,所以就在文本编辑器中改的,直接另存为就可以了
    下面的编码格式选择ANSI就可以了
    我不太清楚你的是什么意思
    我感觉如果是从文本中读的话,就直接改文本的编码格式就可以了
    如果不是,就查找一下论坛上的其他文章,挺多的改变字符编码格式的
      

  3.   

    Flash端就是FlashMX(Macromedia公司出品的动画编辑软件,你不会没听说过吧?)写的客户端。我知道你的意思了,用文本编辑器很好办,但是,FlashMX传输的字符就是Unicode的,这样也是为了多国语言的正常显示吧?我看一些java的书上都说java支持Unicode的,如果说不能支持的话,那么char还用16字节才存储干嘛啊?不好意思,有人能帮帮我吗?谢谢lianyunzxp(小刀):)给我的提示,但是,这样我的问题还是解决不了,唉……希望那位大虾帮帮忙!~
      

  4.   

    你可以有类似下面的方法试试
    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
      

  5.   

    我想有点难度了,程序员们很少去弄flashMX的,何况它还那么的新,呵呵
    就算是actionscript,也不会有太多人有用它和java打交道的案例吧兄弟,努力啊,精神上支持你 :)
      

  6.   

    嗯,我回去试试看:)jacob1(东南西北) :谢谢你的鼓励,不过其实用Flash和java结合的案例很多啊,很多flash聊天室,虚拟社区就是用java写Server,Flash写Client的啊。
      

  7.   

    zhangbaobin(保斌) :
    你说的方法我都试过了,用InputStream读取byte[],然后再转化为String,这样还是乱码。:(
    我对了,我说一下在用flash5写的Client和我原先的那个java server通信的时候,显示正常,没有乱码。(flash5中的字符不是用的Unicode,对于亚洲地区好像是Shift-JIS编码方式)
    这就搞不懂了,java接受非Unicode字符不回乱码,接受Unicode字符反而会乱码,哎,想不通……
    哪位大虾???
      

  8.   

    老兄可以试着先用escape()处理一下先,看是不是能解决问题!
      

  9.   

    String name1=new String(request.getParameter("user_id").getBytes("ISO8859_1"));试试把你得到的东西像上面一样再包装一下
      

  10.   

    我猜想这个跑在浏览器里的东东(flash)应该和浏览器一样处理,(关于乱码问题)
    在tomcat中使用楼上的方法转一下!
      

  11.   

    我的想法是:InputStreamReader构造时如果采用缺省的编码(即不写编码参数),以系统编码为准(一般是GB2312),很显然从Flash传来的数据一定是ISO编码的,所以从第一行编码就错了in = new BufferedReader(new InputStreamReader(socket.getInputStream())); ISO-》GB2312
    改成in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"ISO_8851"));可以试试
      

  12.   

    worldtomev(烈火):
    你说的方法确实可行,但是,每个消息出去前要escape回来又要unescape,你知道flasd的执行效率很慢,这样更加重了处理器的负担(我的Client用了背景的滚屏,CPU资源已经占用了很多了)。
     zergcom(郑超):
    哦?原来InputStreamReader构造是可以制定编码的啊:)我想可能也是这个原因,但是我不知道能在这里指定,嗯,我想这样大概可以了,我回去试试!谢谢你了。
    另外也谢谢 cyberworm(虫子) 和 kert_ake(有坑我就跳) 热人心帮助!
      

  13.   

    嗯,成功了,啊,爽~~~~(按照worldtomev(烈火)的方法,谢谢worldtomev(烈火)了!)
    不过按照改成
    in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"ISO_8851"));不行,会有个getMessage() is ISO_8851 的Excpetion。
    不过呢我改为:in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));就行了,(flashMX的帮助文档中说是采用UTF-8和UTF-16的编码方式,我想汉字应该是16字节的吧,但是我用UTF-16时,java server app根本接受不到数据,郁闷,不过呢,反正现在UTF-8行了,也不管那么多了。啊,正常显示中文了,和flash 端Client交流也顺利啦。
    谢谢大家的帮助,特别感谢worldtomev(烈火)!!