我正在开发一个包含Lift Framework
,GlassfishV3
的网络应用,并且我的应用中存在变音符问题。我只重视绑定到模型,当我从输入文本字段记录值时,变音符号已经被打破。哪里可能是问题?
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
我输入š
,我看到Å¡
作为记录器的输出。
答案 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")
}