网页内Java字符串编码转换

标签 java encoding utf8-decode windows-1255

我有一个网页(通过其 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/

相关文章:

java - 如何编译 Hive UDF

java - 抑制 Eclipse 中死代码的错误

java - 错误 : Execution failed for task ':app:dexDebug' . > com.android.ide.common.process.ProcessException : org. gradle.process.internal.ExecException

俄语的php问题

java - 为什么 UTF8 字符编码在我的项目中无法正常工作?

ruby-on-rails - 不兼容的字符编码 : Windows-1252 and UTF-8 yml files

java - 如何使用 java 获取 linux 上所有可用串口的列表?

python - 用python将西里尔字母写入mysql

mysql - 更改sql文件中的字符

Java将字符流转换成人类 "readable"String