Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java UTF-8编码和Struts 2.1.7_Java_Jquery_Json_Utf 8_Struts2 - Fatal编程技术网

Java UTF-8编码和Struts 2.1.7

Java UTF-8编码和Struts 2.1.7,java,jquery,json,utf-8,struts2,Java,Jquery,Json,Utf 8,Struts2,根据标题,我对字符集编码有问题,我看到的是?,而不是波兰语的特殊字符 我会尽力解释我的问题 我有一个包含以下代码的JSP页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <META http-equiv="Content-Type" content="

根据标题,我对字符集编码有问题,我看到的是
,而不是波兰语的特殊字符

我会尽力解释我的问题

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
data.columnNames
包含来自Java
Action
的带有波兰标签的列表。如果我将调试点放在Firefox上,我会看到字符串中有mark question而不是正确的重音

在Java
操作中
我尝试放置以下代码行:

response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
我还尝试在struts.properties中输入参数:

struts.i18n.encoding=UTF-8
我尝试在struts.xml`中为特定操作添加
param编码

什么都没用,你有什么解决办法吗

更新:

列名
数据是一个
数组列表

columnNames = new ArrayList<String>();
其中
columnData.getValue()
是属性文件的键(例如:
catalog=Rodzina produkt\u00f3w
)。如果我将表达式测试放在debug中,我会看到标签也被编码了
Rodzina produktów
,但在json响应中,我看到:

"columnNames":["","","Pojazd","Rodzina produkt�w"
ArrayList
与以下代码一起放入
jsonData

jsonData.put("columnNames", columnNames);
更新2:

我发现我们正在使用一个名为GZIP的插件来执行某些操作。对于本例,
struts.xml
文件中的结果成功部分定义如下:

$.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
    <result name="success" type="json">
        <param name="excludeNullProperties">true</param>
        <param name="root">jsonData</param>
        <param name="enableGZIP">true</param>
    </result>

真的
杰森达
真的
你知道它是怎么工作的吗

更新3:

删除
enableGZIP
所有功能都可以正常工作,所以剩下的唯一问题是关于这个特定插件的问题。

jQuery提供了可以用来解析JSON的方法

var data = $.parseJSON(data);
它将解码UTF-8字符


在您的操作中发布生成JSON的代码。您在帖子中没有提到任何gzip插件。如何使用它?尝试显式地将
编码
参数添加到结果配置:
UTF-8
。还有哪个版本的S2?感谢Aleksandr,我已经尝试使用编码参数,似乎忽略了它。在我保留enableGZIP参数之前,编码失败,问题在于java和ajax调用回调之间的步骤,因为当数据以javascript代码形式到达时,标签已经损坏。如果以“Rodzina produkt\u00f3w”格式获取数据,则可以对其进行解码。你是这样寄的吗?
var data = $.parseJSON(data);