在生成HTML(或XHTML)的文档转换器的API中,我想公开这些方法:
// Convert the input file to a file using the specified charset
void convert(File in, File out, Charset charset);
// Convert the input document to a string using the specified charset
String convert(String in, Charset charset);
客户端代码无法使用基于文件的方法生成错误文档,它可以使用指定的字符集安全地写入结果文档。
如果客户端代码不遵守所选的字符集,则基于字符串的方法会导致问题 - 例如,如果charset参数是ISO-8859-1但结果字符串在Web中作为UTF-8内容提供应用程序:
String html = convert(getInputDocument(), ISO_8859_1);
...
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
try (PrintWriter out = response.getWriter()) {
out.print(html);
}
问题:我应该考虑哪些选项来设计API,以便引导用户正确使用结果字符串?
结果字符串可以是
<!DOCTYPE html>
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Untitled document</title>
</head>
<body>
<p>Motörhead</p>
</body>
</html>
答案 0 :(得分:0)
我不知道您的确切用例,但有一种可能性是使用适当的对象上下文来保护文档(而不仅仅是The authenticity of host 'SERVER ([IP_ADDRESS]:PORT)' can't be established. RSA key fingerprint is 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:ff. Are you sure you want to continue connecting (yes/no)?
):
String
这样你就可以保留对#34; string&#34;可写入不同的目标。
我不确定您是否需要public interface Document {
void writeTo(ServletResponse response);
}
,因为如果文档看到响应已经有不同的编码,则该文档可以自动转换其内容。但即使你需要convert
,你也可以这样做:
convert
这将返回一个不同字符集的新文档。