修复servlet(java)中的编码

修复servlet(java)中的编码,java,servlets,Java,Servlets,帮助修复servlet中的编码,它不会在输出中显示俄语字符。我将非常感谢您的回答 这就是servlet代码 import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; im

帮助修复servlet中的编码,它不会在输出中显示俄语字符。我将非常感谢您的回答

这就是servlet代码

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class servlet extends HttpServlet {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public static List<String> getFileNames(File directory, String extension) {

        List<String> list = new ArrayList<String>();
        File[] total = directory.listFiles();
        for (File file : total) {
            if (file.getName().endsWith(extension)) {
                list.add(file.getName());
            }
            if (file.isDirectory()) {
                List<String> tempList = getFileNames(file, extension);
                list.addAll(tempList);          
            }
        }
        return list;
    }



@SuppressWarnings("resource")
        protected void doPost(HttpServletRequest request, HttpServletResponse response) 
                throws ServletException, IOException{ 
                request.setCharacterEncoding("utf8");
                response.setContentType("text/html; charset=UTF-8");
                String myName = request.getParameter("text");

                List<String> files = getFileNames(new File("C:\\Users\\vany\\Desktop\\test"), "txt");
                for (String string : files) {
                if (myName.equals(string)) {
                       try {
                            File file = new File("C:\\Users\\vany\\Desktop\\test\\" + string);
                            FileReader reader = new FileReader(file);
                            int b;
                            PrintWriter writer = response.getWriter();
                            writer.print("<html>");
                            writer.print("<head>");
                            writer.print("<title>HelloWorld</title>");
                            writer.print("<body>");
                            writer.write("<div>");
                            while((b = reader.read()) != -1) {
                                writer.write((char) b);
                            }
                            writer.write("</div>");
                            writer.print("</body>");
                            writer.print("</html>");

                        } 
                       catch (Exception ex) {

                        }
                    }

                }
               }
        }
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.List;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
公共类servlet扩展了HttpServlet{
/**
* 
*/
私有静态最终长serialVersionUID=1L;
公共静态列表GetFileName(文件目录,字符串扩展名){
列表=新的ArrayList();
File[]total=directory.listFiles();
用于(文件:总计){
if(file.getName().endsWith(扩展名)){
list.add(file.getName());
}
if(file.isDirectory()){
List templast=getfilename(文件,扩展名);
list.addAll(圣殿骑士);
}
}
退货清单;
}
@抑制警告(“资源”)
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException,IOException{
setCharacterEncoding(“utf8”);
setContentType(“text/html;charset=UTF-8”);
字符串myName=request.getParameter(“文本”);
列表文件=GetFileName(新文件(“C:\\Users\\vany\\Desktop\\test”),“txt”);
用于(字符串:文件){
if(myName.equals(字符串)){
试一试{
File File=新文件(“C:\\Users\\vany\\Desktop\\test\\”+字符串);
FileReader=新的FileReader(文件);
int b;
PrintWriter=response.getWriter();
作者:印刷体(“”);
作者:印刷体(“”);
作家、印刷品(“HelloWorld”);
作者:印刷体(“”);
作者:写(“”);
而((b=reader.read())!=-1){
writer.write((char)b);
}
作者:写(“”);
作者:印刷体(“”);
作者:印刷体(“”);
} 
捕获(例外情况除外){
}
}
}
}
}
这是我展示的内容,而不是字母


在该地区的一名11月18日的两手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手在请求而不是响应上设置字符编码。更改
request.setCharacterEncoding(“utf8”)
响应。setCharacterEncoding(“UTF-8”)

另外:如果系统的默认字符编码不是UTF-8,则在读取文件时应显式设置编码。为此,您需要使用
FileInputStream

pRes.setContentType("text/html; charset=UTF-8");
    PrintWriter out = new PrintWriter(new OutputStreamWriter(pRes.getOutputStream(), "UTF8"), true);

使用这个我得到了确切的结果:)

我试图将UTF-8更改为Win-1251不起作用,除非文件列表在目录中没有更改,保留全局列表
list
并通过
init()加载它
method。但我对编码也有同样的问题?如果你知道你可以给我发代码,请告诉我如何修复编码,因为我还是新手,在那里,它然后粘贴在那个地方,然后在那个地方,粘贴在那个地方,我在那个地方读到了我在某处读到的我在那个地方,我在那个地方读到了我在那个地方,我在那个地方,我在那个地方,我在那个地方读到了我在那个地方,我在那个地方,我在那个地方读到了我需要在我在那个地方,我在我读到我在那个地方,我读到我在那个地方,我读到我读到我在那个地方,我读到我在那个地方,我读到我读到我在某某某某某处,我读到我读到我读到我在某某某处,我读到我在某某处,我读到我读到我读到我在某处,我读到我在某处,我读到我在某处,我读到我在某某处,我在某处,我读到我在某某某处我读到我读到某处,我读到我需要我需要我需要你能帮忙吗,我只是一个Java的新手,如果有人能帮助我做到这一点,我会非常感激,如上所述@Chris@EricScot:这不是它的工作原理。你不能简单地重复你有多想要它。你试着自己做,让我们看看你做了什么,你读了什么。像这样简单地唠叨别人做你的工作是没有成效的。