gpt4 book ai didi

java - UTF-8 编码会破坏嵌入非英文字符的 JSP

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:37 24 4
gpt4 key购买 nike

我正在尝试使用 CharReponseWrapper (依次由我的过滤器调用)向 HttpServletResponse 附加附加内容。

为了支持中文和韩语等多种语言,我必须确保生成的内容(附加后)保留原始字符集和编码。因此,我通过调用 super.getContentType() 获取字符集并解析它以提取字符集。

例如,super.getContentType() 可能返回 text/html; charset=UTF-8 我解析它以提取 UTF-8

随后,我在创建 PrintWriter 对象(它包装 OutputStreamWriter)时提供字符集。 (注意:为清楚起见,省略了 try/catch)

CharResponseWrapper.java:

public class CharResponseWrapper extends HttpServletResponseWrapper
{
....
@Override
public PrintWriter getWriter()
{

String charEnc = getCharsetFromContentType(getContentType());
if (charEnc != null) {
pwriter = new PrintWriter(new OutputStreamWriter(getOutputStream(), charEnc), false);
} else {
pwriter = new PrintWriter(getOutputStream());
}
}
return pwriter;
}
....
}
  • 我有一个带有韩文文本的 JSP。
  • 在该 JSP 中指定了 contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"

JSP的来源:

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.println("한글자모 / 조선글");
%>
</body>
</html>

当我尝试使用韩文字符访问 JSP 时,我收到了一些 ��?浏览器出现乱码。

但是我在响应页面中收到乱码,如下所示。

한글��?모 / 조선글

编辑:我尝试在响应前面添加空字符串,但我仍然面临问题。

最佳答案

看起来内容没有编码,您可以尝试使用编码类型UTF8预编译您的jsp以进行测试,并将文件放在您的应用程序类文件夹中,而不是jsp的文件夹中。

关于java - UTF-8 编码会破坏嵌入非英文字符的 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37881015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com