【问题标题】:how can Weblogic send page with Unicode charsetWeblogic如何发送带有Unicode字符集的页面
【发布时间】:2010-01-18 12:26:13
【问题描述】:

我的应用程序中 99.9% 的页面使用 UTF-8 编码。

但是对于客户端的一些特殊用例,我需要其中一个使用 Unicode(每个字符 2 个字节)

就此而言,此页面的标题是:

<%@ page language="java" contentType="text/html; charset=unicode"%>
...<my content>...

当应用程序在 Tomcat 和 Websphere 上运行时,此实现可以正常工作并完成工作。但是,当它部署在 Weblogic 上时,出现服务器错误: 不支持的编码:'unicode':java.io.UnsupportedEncodingException:unicode

有人知道我可以如何强制 Weblogic 以“Unicode”编码发送页面吗?

【问题讨论】:

  • 伙计,您可以粘贴 Websphere 生成页面(hexdump)的摘录以查看实际编码吗?

标签: java encoding weblogic


【解决方案1】:

UTF-8 是 Unicode。 “Unicode”本身不是字符编码,它是字符映射标准(字符集)。你的问题出在别的地方。也许您在 GET 请求编码方面遇到了问题。这常常被忽视。然后,您可能会发现这篇文章有助于获取更多背景信息和完整的解决方案,如何让 Unicode 现象在 Java EE Web 应用程序中发挥作用:Unicode - How to get the characters right?

祝你好运。

顺便说一句,“每个字符 2 个字节”是大多数 UTF-16 编码的特征(0x0000 直到 0xFFFF 用 2 个字节表示,而 UTF-8 对每个字符使用 1、2 和 3 个字节子范围)。也许您只是想改用它?

【讨论】:

  • 我已经尝试将 charset-unicode 更改为 charset=UTF-16 但没有帮助。当 Tomcat 或 Websphere 使用 charset=unicode 生成页面时,它们会使用某种我无法弄清楚它是什么的编码将页面发送到客户端(但它解决了我的特定问题),并且由于某种原因 Weblogic 的行为有所不同.
  • 我建议阅读链接的文章以了解发生了什么,这样您就可以更轻松地确定根本原因。您可以在任何体面的浏览器(例如 firefox)中通过 view 检查使用的编码。
  • 好的,我无法标记您的答案,因为我的问题并未真正解决,但您为我提供了一些线索,感谢您的努力。
【解决方案2】:

Unicode 不是字符集,但有一些字符集允许表示要在 Unicode 系统中表示的字符。您已经知道 UTF-8 字符集,它使用 1、2、3 或 4 个字节对每个字符进行编码,具体取决于字符在系统中的位置。您似乎想使用 UTF-16 字符集,它将每个字符编码为 2 或 4 个字节。

与 BalusC 提供的答案相关的注意事项:这里我使用单词“charset”作为“Content-Type MIME 标头中字符集编码部分的分母”。严格来说,Unicode提供的Universal Character Set是一个字符集,但是我们并没有严格的用charset moniker来指定一个字符集。

【讨论】:

  • 当您说字符集时,您可能指的是“编码”或“字符编码”。 UTF-8 也不是字符集(如您所述),它使用 Unicode 字符集。将“charset”用于“encoding”的时候,每种广泛使用的编码只是将值 0-255 映射到某些字符的简单映射,因此每种编码都有自己支持的字符集。现代编码(UTF-8、UTF-16,甚至 UTF-7)支持所有 Unicode 字符,因此称它们为“字符集”并不正确。
  • Joachim 是对的,但不幸的是,这并没有在任何地方得到一致的使用。例如,content-type 标头希望它被指定为charset,而不是encoding 左右。
  • 假设在添加注释之前发布了 Joachim 评论 :-)
猜你喜欢
  • 1970-01-01
  • 2011-12-17
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2020-02-03
相关资源
最近更新 更多