电梯无法处理变音符号

时间:2010-12-21 23:35:56

标签: scala java-ee glassfish lift diacritics

我正在开发一个包含Lift FrameworkGlassfishV3的网络应用,并且我的应用中存在变音符问题。我只重视绑定到模型,当我从输入文本字段记录值时,变音符号已经被打破。哪里可能是问题?

     bind("entry",content,
              "place" -> SHtml.text(lib.place, lib.place=_),
              "submit" -> SHtml.submit("Kaboom", () => {
                    Logger.getAnonymousLogger.severe(lib.place)
                    Service.library.save(lib)})
        )

这可能是一般的java问题,不仅限于Lift 我输入š,我看到Å¡作为记录器的输出。

4 个答案:

答案 0 :(得分:3)

要知道整个问题的根源位于键盘和椅背之间,会让您感觉更好还是更糟?

以下是发生的事情:

你想要打印出š,lower-case s-with-caron,在Unicode中用数字0x161表示。您将其打印到文件中,并且您的I / O系统尽职地(并且正确地)在UTF-8中将其编码为0xC5,0xA1。然后您询问了该文件的视图,而没有向您的查看程序解释它是一个UTF-8文件。您的查看程序,无论它是什么,都将文件解释为ISO 8859-1,这是一种非常常见的,有点老的格式。 0xC5显示为Å,A-with-a-ring,0xA1显示为¡,inverted exclamation mark

总而言之,输出没有任何问题,你看待它的方式有问题。在编辑器中记录日志并将编码设置为UTF-8或在Web浏览器中显示,然后选择查看/字符编码/ UTF-8。

答案 1 :(得分:2)

我的猜测是,这可能是浏览器的线索。浏览器为页面假设的编码是什么?你头上有编码元标记吗?像这样:

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

答案 2 :(得分:2)

这可能是记录器或控制台中的问题。尝试登录到文件并在您知道可以处理UTF8的编辑器中打开它

答案 3 :(得分:1)

所以获得UTF-8编码的一个选项是在sun-web.xml文件中指定编码,如下所示:

<sun-web-app error-url="">
    <parameter-encoding default-charset="UTF-8"/>
</sun-web-app>

另一个选项是在lift bootstrapping类中设置编码:

def boot {
    LiftRules.early.append(makeUtf8)
}
private def makeUtf8(req: HTTPRequest) {
    req.setCharacterEncoding("UTF-8")
}