我有一个 listgrid,其中所有项目都使用变音符号正确显示,因为它们在本地和 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();
}
另外,在我的 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>
作为 listgrids 正确显示变音符号的工作方式。
此外,在我的 web.xml 中,我有我的 servlet
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
也许我走错了路,这是由其他原因造成的。
本地导出的文件和从jboss服务器导出的文件都具有准确的文件大小。
此外,对于我的 Jboss jvm,我设置了 java_opts 的属性
-Dfile.encoding=UTF-8
编辑:根据建议添加了参数映射。还是什么都没有。
最佳答案
听起来像是字符编码/解码问题。
您的代码生成了 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");
到
dsRequestProperties.setContentType("application/csv; charset=ISO-8859-1");
希望可以解决问题。 org.apache.catalina.connector.URI_ENCODING 设置不影响文件编码,应保持原样。
关于java - 导出为CSV编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10243029/
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
CSV.open(name,"r").eachdo|row|putsrowend我得到以下错误:CSV::MalformedCSVErrorUnquotedfieldsdonotallow\ror\n文件名是一个.txt制表符分隔文件。我是专门做的。我有一个.csv文件,我转到excel,并将文件保存为.txt制表符分隔的文件。所以它是制表符分隔的。CSV.open不应该能够读取制表符分隔的文件吗? 最佳答案 尝试像这样指定字段分隔符:CSV.open("name","r",{:col_sep=>"\t"}).eachdo|row|
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub