我已经使用 JSP 构建了一个带有表示层的 Web 应用程序。在每个 JSP 中,我都定义了这样的字符集:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
如果用户想要编辑用户配置文件的信息,我将对象加载到表单中。如果页面已在Opera、Chrome、Safari或IE 10(在 Windows 7 上)中访问,一旦我将表单发送到后端(Java)并将数据合并到数据库中,则某些字符存储错误。主要是:á, é, í, ó, ú, ... 但是使用Firefox没有问题。
我正在运行 Oracle 11g,这是字符集:
SQL> select * from v$nls_parameters;
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_LANGUAGE
SPANISH
NLS_TERRITORY
SPAIN
NLS_CURRENCY
Ç
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_ISO_CURRENCY
SPAIN
NLS_NUMERIC_CHARACTERS
,.
NLS_CALENDAR
GREGORIAN
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_DATE_FORMAT
DD/MM/RR
NLS_DATE_LANGUAGE
SPANISH
NLS_CHARACTERSET
AL32UTF8
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_SORT
SPANISH
NLS_TIME_FORMAT
HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT
DD/MM/RR HH24:MI:SSXFF
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_TIME_TZ_FORMAT
HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT
DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY
Ç
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_NCHAR_CHARACTERSET
AL16UTF16
NLS_COMP
BINARY
NLS_LENGTH_SEMANTICS
BYTE
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_NCHAR_CONV_EXCP
FALSE
19 rows selected.
我已经检查过在其他计算机上编辑配置文件,结果是一样的。不知道是哪里出了问题,求大神帮忙?谢谢
更新:表单提交的 JS 代码:
$(function() {
$('#user-update').submit(function(event) {
event.preventDefault();
...
$.ajax({
type: 'PUT',
url: '/user/${user.userId}/update',
data : JSON.stringify($('#user-update').serializeObject()),
contentType: 'application/json',
success: function() {
...