在作一个文件上载java  bean的时候出现了一个奇怪的问题  
文件上载没什么问题,当<form  name="form1"  method="post"  ENCTYPE="multipart/form-data">时读取表单<INPUT/>则需要用indexOf("name=\ "")提取出来.  
如果有汉字提取的值要转换成UTF-8的格式才能识别  
 
转换的方法是new  String(fieldValue.getBytes(),"UTF-8"),  
输入比较长或者是字母结尾时转换正确,没有任何问题  
可是当输入比较短,或者没有字母结尾就出现部分乱码  
 
比如"国","a国","中华人民共和国"中的"国"字都是乱码,"中华人民共和"却不是乱码  
 
"国a"不是乱码,只要在结尾加个英文字母就正常了........  
请教原因和解决办法

解决方案 »

  1.   

    提取代码你贴一下,我顺便想问一句:你提取name干什么?难道是把文件的描述写到name里了?
      

  2.   

    http://cnse.cn/html/program/java/511/48609.html
    参考这个写的
    部分代码
     // 普通表单输入元素
    // 获取输入元素名字
    int pos = newLine.indexOf("name="");
    String fieldName = newLine.substring(pos+6, newLine.length()-3);i = in.readLine(line, 0, 128);
    i = in.readLine(line, 0, 128);
    newLine = new String(line, 0, i);
    StringBuffer fieldValue = new StringBuffer(128);
    while (i != -1 && !newLine.startsWith(boundary)) {
    // 最后一行包含换行字符
    // 因此我们必须检查当前行是否是最后一行
    i = in.readLine(line, 0, 128);
    if ((i==boundaryLength+2 || i==boundaryLength+4)
    && (new String(line, 0, i).startsWith(boundary)))
    fieldValue.append(newLine.substring(0, newLine.length()-2));
    else
    fieldValue.append(newLine);
    newLine = new String(line, 0, i);
    }
    fields.put(fieldName, fieldValue.toString());//这个位置和我写的不一样,我要把fieldValue返回成UTF-8
    }
    }
    i = in.readLine(line, 0, 128);
    可以这样理解fields.put(fieldName, new String(fieldValue.toString().getBytes(),"UTF-8");
    现在这里,转换成UTF-8时出问题
      

  3.   

    不会是很大的问题的,你先把主体的代码全剃掉,把你要转码的string给println出来。不会是大问题的。我还没仔细看那个bean的代码,我原来写这种上传的bean的时候印象并没取过name。anyway,为了好调试,先把主体的代码全剃掉。
      

  4.   

    HOHO,回了才发现,今天晚上说话语无伦次的。估计太困了,HOHO。实在不行就你就加个a,服务器这边substring一下,明天上午再给你调一下那个bean。regards
      

  5.   

    可能不是bean的问题,怀疑是java UTF-8转换的问题
      

  6.   

    转换的文字稍微长点就没问题,太短就会乱码,难道是文字太少java判断失误?
      

  7.   

    java的编码太烦人了,我深受其害啊
      

  8.   

    new String(String.getBytes("ISO-8859-1"),"gbk")
      

  9.   

    问题是要转换成UTF-8,有没有什么强制转换的方法
    从什么特定类型转换到特定类型?
      

  10.   

    好好看看这文章,你就明白了
    http://www.matrix.org.cn/resource/article/43/43954_J2EE_Multibyte_character.html
      

  11.   

    zhousheng198(海)的文章看过了,和我情况有很多不同
    现在运行的环境,全使用的是UTF-8,服务器端,客户端都是如此.
    这个问题再放一天,明天结帖