woainan6042
2009-06-09 17:43 阅读 362
已采纳

java io 读取输出文件中文乱码问题

java io 读取输出文件中文乱码问题。windows系统没有问题。服务器是linux,输出就是乱码。
[b]问题补充:[/b]
源码,大家看下
[b]问题补充:[/b]
现实页面!!
[b]问题补充:[/b]
...............
[b]问题补充:[/b]
所有方法都试了,还是不行 :cry:
[b]问题补充:[/b]
问题解决了,谢谢各位。
闭着眼来吧,谁也别怪我啊
抽到谁是谁

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

13条回答 默认 最新

  • 已采纳
    iteye_8220 iteye_8220 2009-06-10 15:25

    解决方法应该是比较简单的

    1.源字符串编码
    2.传输过程中的编码
    3.结果字符串编码

    只要这三种做到一致,就不会有问题。
    在从流中读数据时,最好使用byte数组,这样的好处是可以支持任何编码格式。

    点赞 评论 复制链接分享
  • ywbanm ywbanm 2009-06-09 17:47

    看看你Linux服务器编码是什么,包含中文字符集么

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2009-06-09 17:55

    windows系统一般都是中文版本,当然默认字符就是gb2312,中文当然不会乱码
    所以,读取文件的时候最好指定字符编码

    InputStreamReader inread = new InputStreamReader(new FileInputStream(fileName),encoding);

    点赞 评论 复制链接分享
  • iteye_15036 iteye_15036 2009-06-09 22:36

    InputStreamReader inread = new InputStreamReader(new FileInputStream(fileName),"GBK");

    点赞 评论 复制链接分享
  • binma85 Manny很忙 2009-06-10 00:47

    编码问题,现在通用的编码格式是utf-8,java开发最常用的是utf8,so。。I believe it should be :
    InputStreamReader inread = new InputStreamReader(new FileInputStream(fileName),"UTF-8");

    点赞 评论 复制链接分享
  • kaytiu kaytiu 2009-06-10 10:21

    把读出来的str重新转换一次
    str=new String(str.getBytes("iso-8859-1"));

    点赞 评论 复制链接分享
  • cammy0301 cammy0301 2009-06-10 10:50

    windows下行,linux下不行,你肯定是linux服务器的默认编码没有设置成你工程对应的编码了,应该不关你程序里面的事情了,我看你只要修改linux服务器编码就能解决问题的,我以前部署的时候也遇到过,程序里面是统一管理编码过滤的,应该能确定linux的编码有问题。关于如何修改linux编码,baidu吧,关键字linux 默认编码。

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2009-06-10 11:50

    源码在哪????

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2009-06-10 13:03

    把它改成用InputStreamReader inread = new InputStreamReader(new FileInputStream(fileName),"GBK");

    char bytes[] = new char[1024];

    点赞 评论 复制链接分享
  • kaytiu kaytiu 2009-06-10 13:18

    在execute方法里
    最前面加上
    request.setCharacterEncoding(encoding);
    response.setCharacterEncoding(encodin);
    你调试下你保存内容时是不是乱码
    应该找出乱码出现的第一位置

    点赞 评论 复制链接分享
  • ywbanm ywbanm 2009-06-10 17:40

    这个:

    看看你Linux服务器编码是什么,包含中文字符集么

    你确定你看了?

    点赞 评论 复制链接分享
  • binma85 Manny很忙 2009-06-10 22:46

    在你的src里面加入这个filter类
    [code="java"]public class CharacterEncodingFilter implements Filter{

    public void destroy() {
    
    }
    
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
                    throws IOException, ServletException {
    
        request.setCharacterEncoding("gb2312");
        chain.doFilter(request,response);
    }
    
    public void init(FilterConfig arg0) throws ServletException {
    
    }
    

    }
    [/code]
    然后再你的web.xml里面加入
    [code="java"]
    encodingFilter
    com.hyman.structs.filter.CharacterEncodingFilter

    <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <servlet-name>action</servlet-name>
    </filter-mapping>[/code]
    

    注意web.xml中的这段代码加在之前。

    点赞 评论 复制链接分享
  • lilei236 lilei236 2009-06-11 13:30

    如果你已经试了通过java控制转码不好使的话。

    那可能是你的linux系统中的字库的问题。

    有两种情况。

    1.linux系统没有支持的字库。需要下载。
    2.linux系统有此字库,但字库配置文件没有链接此字库。
    需要修改字库配置文件。

    点赞 评论 复制链接分享