UTF-8 编码和 Struts 2.1.7

问题描述 投票:0回答:1

根据标题,我遇到了 UTF-8 字符集编码问题。我看到

?
而不是波兰语的特殊字符。

我会尽力解释我的问题。

我有一个带有以下代码的页面 JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

我有一个Ajax调用是这样写的:

$.ajax({
                url :urlToPrepend + "url/load.action",
                type : "post",
                dataType : "json",
                async:false,
                data : 
                {
                    repeat: 0,
                    changedLayoutName:activeLayoutRS,
                    sapNamesWithConfig:selectedColumnSAPNamesWithConfigRS,
                    columnNamesWithConfig:selectedColumnNamesWithConfigRS,
                    sortBy:sortByWithConfigRS,
                    extractConfig:extractConfigRS,
                    savedParams:savedParams
                },
                success : function(data) 
                {
                     data.columNames

data.columnNames
包含来自 Java
Action
的带有波兰语标签的列表。如果我用 Firefox 放置调试点,我会看到字符串有标记问题而不是正确的重音。

在Java中

Action
我尝试放置这些代码行:

response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");

我也尝试输入

struts.properties
参数:

struts.i18n.encoding=UTF-8

我尝试在

param
中添加
struts.xml
编码以执行特定操作。

没有任何效果,你有解决方案的想法吗?

更新:

columnNames
数据是
ArrayList
:

columnNames = new ArrayList<String>();

充满

getText()
方法:

columnNames.add(getText(columnData.getValue())))

其中

columnData.getValue()
是属性文件的键(例如:
catalogue=Rodzina produkt\u00f3w
)。如果我在调试中进行表达式测试,我也会看到编码的标签
Rodzina produktów
但在 json 响应中我看到了这个:

"columnNames":["","","Pojazd","Rodzina produkt�w"

ArrayList
放入
jsonData
,代码如下:

jsonData.put("columnNames", columnNames);

更新2:

我发现我们正在使用一个名为 GZIP 的插件来执行某些操作。对于这个,

struts.xml
文件中的结果成功部分是这样定义的:

    <result name="success" type="json">
        <param name="excludeNullProperties">true</param>
        <param name="root">jsonData</param>
        <param name="enableGZIP">true</param>
    </result>

你知道它是如何运作的吗?

更新3:

删除

enableGZIP
一切都按预期工作,所以剩下的唯一问题是关于这个特定的插件。

java jquery json utf-8 struts2
1个回答
0
投票

jQuery 有

parseJSON
方法,可用于解析 JSON

var data = $.parseJSON(data);

它将解码 UTF-8 字符。

运行演示

运行演示2

© www.soinside.com 2019 - 2024. All rights reserved.