Java 将UTF-8转换为windows-1252,并在tomcat v7上的gwt 2.7.0中写入csv

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中的隐藏字段中。然后

我在将UTF-8转换为windows-1252时遇到问题。我必须输出像²,³,°这样的符号。客户希望在Excel中打开文件,而不通过双击导入文件

系统: gwt 2.7.0中的前端大量使用gxt 3.1.4 客户端的服务器是tomcat v7 测试在gwt内置服务器上完成

现在的问题是,该应用程序支持日文符号,这些符号在UTF-8中显示得非常好,但在windows-1252中却没有。另一方面,会显示²、³、度符号。当前的解决方案是收集
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");