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
包含来自JavaAction
的带有波兰标签的列表。如果我将调试点放在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);