在Java中处理utf-8字符串

时间:2012-02-10 22:58:15

标签: string utf-8

我有一个应用程序,它使用ajax调用从域的活动目录中提取名称。有些名字有西班牙文字符(例如,代字号)。我使用utf-8字符集来让字符正确显示表单上的数据。我可以成功从ajax调用中提取名称并将它们加载到表单字段中。我遇到的问题是,当表单发布到服务器进行数据库更新时,String强制转换会破坏扩展字符。

是否有特殊的String函数来处理utf-8?将正确的值发布到Oracle表的正确方法是什么?

我做了很多Java编码,但这是我第一次遇到扩展字符。任何帮助将不胜感激。

感谢。

2 个答案:

答案 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。