把它改为ANSI就没问题了
正常来说用Writer和Reader不应该出现这种乱码的问题的
不过我以前确实遇到过这样的现象
参照http://www.csdn.net/expert/topic/658/658351.xml?temp=.7225305
希望能对你有所帮助
正常来说用Writer和Reader不应该出现这种乱码的问题的
不过我以前确实遇到过这样的现象
参照http://www.csdn.net/expert/topic/658/658351.xml?temp=.7225305
希望能对你有所帮助
我那个是文本文件,所以就在文本编辑器中改的,直接另存为就可以了
下面的编码格式选择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
就算是actionscript,也不会有太多人有用它和java打交道的案例吧兄弟,努力啊,精神上支持你 :)
你说的方法我都试过了,用InputStream读取byte[],然后再转化为String,这样还是乱码。:(
我对了,我说一下在用flash5写的Client和我原先的那个java server通信的时候,显示正常,没有乱码。(flash5中的字符不是用的Unicode,对于亚洲地区好像是Shift-JIS编码方式)
这就搞不懂了,java接受非Unicode字符不回乱码,接受Unicode字符反而会乱码,哎,想不通……
哪位大虾???
在tomcat中使用楼上的方法转一下!
改成in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"ISO_8851"));可以试试
你说的方法确实可行,但是,每个消息出去前要escape回来又要unescape,你知道flasd的执行效率很慢,这样更加重了处理器的负担(我的Client用了背景的滚屏,CPU资源已经占用了很多了)。
zergcom(郑超):
哦?原来InputStreamReader构造是可以制定编码的啊:)我想可能也是这个原因,但是我不知道能在这里指定,嗯,我想这样大概可以了,我回去试试!谢谢你了。
另外也谢谢 cyberworm(虫子) 和 kert_ake(有坑我就跳) 热人心帮助!
不过按照改成
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(烈火)!!