我在尝试在 JSF 中实现国际化时遇到问题。当我在我的 UI 页面中输入一些数据(使用英语以外的语言)时,该值作为加密值存储在我的托管 Bean 变量中(甚至无法识别那是什么格式)。当我在我的 UI 页面中输入它时,我无法获得该值。我需要将不同语言的值(来自 JSF 页面)存储在我的 MySql 数据库中。但是如上所述,我正在努力获取托管 Bean 中的输入值。请指导我这样做。
提前致谢
我在尝试在 JSF 中实现国际化时遇到问题。当我在我的 UI 页面中输入一些数据(使用英语以外的语言)时,该值作为加密值存储在我的托管 Bean 变量中(甚至无法识别那是什么格式)。当我在我的 UI 页面中输入它时,我无法获得该值。我需要将不同语言的值(来自 JSF 页面)存储在我的 MySql 数据库中。但是如上所述,我正在努力获取托管 Bean 中的输入值。请指导我这样做。
提前致谢
加密?你在开玩笑。很可能您实际上是指Mojibake。
为了避免 Mojibake,您需要确保在整个应用程序中使用相同的字符编码,同时生成和使用字符。如今,如果您想要统治世界,UTF-8 是一个明智的选择。JSF2 一直默认为 UTF-8。所以你的问题有点奇怪。
也许您实际上正在使用 PrimeFaces?众所周知,当触发 ajax 请求时,默认的 UTF-8 字符编码会变得混乱。这部分在这里得到了回答,您需要创建一个 servlet 过滤器。
或者该值实际上是正确的,但是您将该值打印到根本不支持 UTF-8 的输出中,因此您错误地确定了问题的原因?例如通过System.out.println()
Eclipse 控制台。您需要通过Window > Preferences > General > Workspace > Text file encoding进行配置,如此处所述。
或者,也许您明确地将 JSF2 编码强制为不同的东西<f:view encoding>
,例如 to ISO-8859-1
。您不应该这样做,encoding
从 中删除该属性<f:view>
并保持其默认值。
或者很可能您的 MySQL 数据库/表编码根本不是 UTF-8,但这与您描述的问题症状不匹配,或者您必须省略您实际打印从数据库检索的值而不是从表单提交中检索到的值。
无论如何,您需要了解的有关 Java EE Web 应用程序中字符编码的所有信息,以及所有可能的问题和解决方案都在Unicode 中进行了详细说明 - 如何正确使用字符?