我有一个应用程序,它使用ajax调用从域的活动目录中提取名称。有些名字有西班牙文字符(例如,代字号)。我使用utf-8字符集来让字符正确显示表单上的数据。我可以成功从ajax调用中提取名称并将它们加载到表单字段中。我遇到的问题是,当表单发布到服务器进行数据库更新时,String强制转换会破坏扩展字符。
是否有特殊的String函数来处理utf-8?将正确的值发布到Oracle表的正确方法是什么?
我做了很多Java编码,但这是我第一次遇到扩展字符。任何帮助将不胜感激。
感谢。
答案 0 :(得分:4)
这个“演员”在哪里发挥作用?
我不确定你的应用程序是什么,但有几个地方你可能会破坏角色。首先,假设这是某种Java EE应用程序,请确保在servlet中设置了请求编码。请参阅HttpServletRequest的setCharacterEncoding方法。你应该在那里使用“UTF-8”。
其次,您应该确保在表单变量上设置了accept-charset =“UTF-8”属性。 (注意 - 根据我的经验,如果页面首先采用UTF-8编码但很安全而不是遗憾,这很少会出现问题。)
如果需要连接数据库,请确保已指定任何编码选项。我不使用Oracle,所以我不知道,但通常你需要指定在创建连接的地方使用“unicode”或“utf-8”等。
我会按顺序尝试它们,因为它可能(可能)第一个可能解决问题。
答案 1 :(得分:1)
你想要一个OutputStreamWriter。构造它时,请指定要使用“UTF-8”字符集。另外,请确保指定您在http标头中发送UTF-8。