Fof*_*ole 9 java gwt encoding jboss export
我有一个listgrid,其中所有项目都使用变音符号正确显示,因为它们在db本地和jboss服务器上.
但是,在jboss服务器上,当我尝试导出为csv时,所有的变音字符都被替换,所以我得到的东西就像¿~coala而不是Şcoala,虽然变音符号在listgrid中正确显示.
本地工作正常,在listgrid和导出中显示.
这是我的导出代码:
private void Export() {
String exportAs = (String) m_ExportForm.getField("exportType").getValue();
FormItem item = m_ExportForm.getField("showInWindow");
boolean showInWindow = item.getValue() == null ? false : (Boolean) item.getValue();
// exportAs is either XML or CSV, which we can do with requestProperties
Map<String,String> params= new java.util.HashMap<String, String>();
params.put("Accept-Charset","utf-8");
DSRequest dsRequestProperties = new DSRequest();
dsRequestProperties.setHttpHeaders(params);
dsRequestProperties.setExportValueFields(true);
dsRequestProperties.setExportAs((ExportFormat)EnumUtil.getEnum(ExportFormat.values(), exportAs));
dsRequestProperties.setExportDisplay(showInWindow ? ExportDisplay.WINDOW : ExportDisplay.DOWNLOAD);
// TODO: move in user-config
dsRequestProperties.setExportTitleSeparatorChar("_");
dsRequestProperties.setExportDelimiter(";");
dsRequestProperties.setExportFilename("export." + extensionsValueMap.get(exportAs));
dsRequestProperties.setContentType("text/csv; charset=UTF-8");
m_Target.Export(dsRequestProperties);
Close();
}
Run Code Online (Sandbox Code Playgroud)
另外,在我的jboss 7属性文件中,我有这个:
<system-properties>
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
</system-properties>
Run Code Online (Sandbox Code Playgroud)
作为listgrids正常显示变音符号.
另外,在我的web.xml中,我有我的servlet
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
Run Code Online (Sandbox Code Playgroud)
也许我在错误的轨道上,这是由其他东西引起的.
本地导出的文件和从jboss服务器导出的文件都具有确切的文件大小.
另外,对于我的Jboss jvm,我为java_opts设置了属性
-Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
编辑:由于建议添加了参数图.依然没有.
听起来这是一个字符编码/解码问题。
您的代码生成了一个采用 UTF-8 编码的 CSV 文件。但是,您使用什么程序来读取CSV?Windows 记事本?如果它是 Windows 应用程序,则很可能假设文本文件采用ISO-8859-1编码。
选项1:
告诉记事本或您的 Windows 应用程序编码。使用记事本,“文件/打开”对话框中有一个编码下拉列表。将其切换为 UTF-8。
选项2:
将源代码中的编码从 更改为UTF-8,ISO-8859-1这与 Windows 的默认编码相匹配。改变线路:
dsRequestProperties.setContentType("application/csv; charset=UTF-8");
Run Code Online (Sandbox Code Playgroud)
到
dsRequestProperties.setContentType("application/csv; charset=ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)
希望能成功。该org.apache.catalina.connector.URI_ENCODING设置不会影响文件编码,应保持原样。