在JSF中使用国际化时出现的问题



我在JSF中尝试实现国际化时遇到了一个问题。当我在UI页面中输入一些数据(用英语以外的语言)时,该值会作为加密值存储在ManagedBean变量中(甚至无法识别其格式)。当我在UI页面中输入该值时,无法获取该值。我需要在MySql数据库中存储不同语言的值(来自JSF页面)。但是我正在努力获得ManagedBean中的输入值,如上所述。请引导我去做那件事。

提前感谢

加密?你在开玩笑。很可能你说的是Mojibake。

为了避免Mojibake,您需要确保在生成和使用字符时,在整个应用程序中使用相同的字符编码。如今,如果你想统治世界,UTF-8是一个明智的选择。JSF2已经一直默认为UTF-8。所以你的问题有点奇怪。

也许你真的在用PrimeFaces?众所周知,当激发ajax请求时,会破坏默认的UTF-8字符编码。这里已经回答了这个部分,您需要创建一个servlet过滤器。

或者,这个值实际上是正确的,但您将该值打印到一个根本不支持UTF-8的输出中,从而错误地确定了问题的原因?例如,通过Eclipse控制台中的System.out.println()。您需要通过窗口>首选项>常规>工作区>文本文件编码进行配置,如此处所述。

或者,您可能通过<f:view encoding>明确地将JSF2编码强制为不同的内容,例如ISO-8859-1。您不应该这样做,请从<f:view>中删除encoding属性并保持其默认值。

或者,很可能您的MySQL DB/表编码根本不是UTF-8,但这与您描述的问题症状不匹配,或者您一定忽略了实际打印从DB中检索到的值而不是从表单提交中检索到值的部分。

在任何情况下,您需要了解的关于Java EE web应用程序中的字符编码的所有信息,以及所有可能的问题和解决方案,都在Unicode中进行了详细阐述-如何正确使用字符?

相关内容

  • 没有找到相关文章

最新更新