Java 将UTF-8转换为windows-1252,并在tomcat v7上的gwt 2.7.0中写入csv
我在将UTF-8转换为windows-1252时遇到问题。我必须输出像²,³,°这样的符号。客户希望在Excel中打开文件,而不通过双击导入文件 系统: gwt 2.7.0中的前端大量使用gxt 3.1.4 客户端的服务器是tomcat v7 测试在gwt内置服务器上完成 现在的问题是,该应用程序支持日文符号,这些符号在UTF-8中显示得非常好,但在windows-1252中却没有。另一方面,会显示²、³、度符号。当前的解决方案是收集Java 将UTF-8转换为windows-1252,并在tomcat v7上的gwt 2.7.0中写入csv,java,csv,gwt,encoding,utf-8,Java,Csv,Gwt,Encoding,Utf 8,我在将UTF-8转换为windows-1252时遇到问题。我必须输出像²,³,°这样的符号。客户希望在Excel中打开文件,而不通过双击导入文件 系统: gwt 2.7.0中的前端大量使用gxt 3.1.4 客户端的服务器是tomcat v7 测试在gwt内置服务器上完成 现在的问题是,该应用程序支持日文符号,这些符号在UTF-8中显示得非常好,但在windows-1252中却没有。另一方面,会显示²、³、度符号。当前的解决方案是收集csv的行,并将它们放在FormPanel中的隐藏字段中。然后
csv
的行,并将它们放在FormPanel
中的隐藏字段中。然后对FormPanel
进行编码并提交
public void postCsvForExcel( String url, Map<String, String> postData )
{
setSize( "0px", "0px" );
setVisible( false );
sinkEvents( Event.ONLOAD );
setMethod( FormPanel.METHOD_POST );
setEncoding( FormPanel.ENCODING_URLENCODED );
VerticalPanel panel = new VerticalPanel();
add( panel );
for( Entry<String, String> data : postData.entrySet() )
{
Hidden hiddenField = new Hidden( data.getKey(), data.getValue() );
panel.add( hiddenField );
}
SubmitButton submit = new SubmitButton();
panel.add( submit );
setAction( url );
FormElement.as( this.getElement() ).setAcceptCharset( "Cp1252" );
RootPanel.get().add( this );
submit();
}
但这似乎不起作用。我错过了什么吗
进一步信息:我观察到一件奇怪的事情。doPost
方法,尽管被调用对文件的编码没有影响。我尝试用UTF-8编码,但输出仍然是windows-1252。当我在前面的方法中删除FormPanel
的编码时,结果是UTF-8
另一个问题是,windows-1252的正确编码是什么,我试过两个版本,cp1252和windows-1252,我看不出结果有什么不同。在cp1252中不能显示日语字符。指令本身没有得到适当的调查。客户不知道cp1252有什么功能。在处理解决方案之前,应检查此问题。您可以添加以下代码,然后重试:
filename = new String(filename.getBytes(), "ISO-8859-1");
我觉得你把事情弄得太复杂了。我只需要使用API生成带有UTF-8编码的
xls
。这将显示所有字符。遗憾的是,我无法向该项目添加新的依赖项。它必须是csv,用户双击即可在Excel中打开。
filename = new String(filename.getBytes(), "ISO-8859-1");