我有一个网页(通过其 header )编码为 WIN-1255
。
Java 程序创建自动嵌入到页面中的文本字符串。问题在于原始字符串以 UTF-8 编码,因此在页面中创建了乱码文本字段。
很遗憾,我无法更改页面编码 - 这是客户专有系统所要求的。
有什么想法吗?
更新:
我正在创建的页面是一个 RSS 提要,需要设置为 WIN-1255,显示从另一个以 UTF-8 编码的提要获取的信息。
第二次更新:
感谢所有回复。我已经设法转换了字符串,但是,乱码。问题是除了 header 编码之外还应该设置 XML 编码。
亚当
最佳答案
至此,您需要设置response writer的编码。仅使用响应 header ,您基本上只指示客户端应用程序使用哪种编码来解释/显示页面。如果响应本身是用不同的编码编写的,这将不起作用。
你遇到这个问题的上下文完全不清楚(请在以后的类似问题中详细说明),所以这里有几种解决方案:
如果是JSP,需要在JSP顶部设置如下设置响应编码:
<%@ page pageEncoding="WIN-1255" %>
如果是Servlet,需要在第一次flush前设置响应编码:
response.setCharacterEncoding("WIN-1255");
顺便说一句,两者都自动隐式设置了带有charset
参数的Content-Type
响应头,以指示客户端使用相同的编码来解释/显示页面。另见 this article获取更多信息。
如果它是依赖于基本 java.net
和/或 java.io
API 的本地应用程序,那么您需要通过 OutputStreamWriter
使用 the constructor taking 2 arguments 构建其中您可以指定编码:
Writer writer = new OutputStreamWriter(someOutputStream, "WIN-1255");
关于网页内Java字符串编码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191218/