﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-                                  &lt;center&gt;&lt;font size=5&gt;心的方向&lt;/center&gt;-随笔分类-报表</title><link>http://www.blogjava.net/zilong/category/40589.html</link><description>                           &lt;center&gt;   新的征途...... &lt;/center&gt;</description><language>zh-cn</language><lastBuildDate>Thu, 02 Jul 2009 02:20:36 GMT</lastBuildDate><pubDate>Thu, 02 Jul 2009 02:20:36 GMT</pubDate><ttl>60</ttl><item><title>关于birt中文参数</title><link>http://www.blogjava.net/zilong/archive/2009/07/02/285089.html</link><dc:creator>阿伟</dc:creator><author>阿伟</author><pubDate>Thu, 02 Jul 2009 01:56:00 GMT</pubDate><guid>http://www.blogjava.net/zilong/archive/2009/07/02/285089.html</guid><wfw:comment>http://www.blogjava.net/zilong/comments/285089.html</wfw:comment><comments>http://www.blogjava.net/zilong/archive/2009/07/02/285089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zilong/comments/commentRss/285089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zilong/services/trackbacks/285089.html</trackback:ping><description><![CDATA[<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">之前看网上有人发帖说有个解决办法是</span>&#8220;<span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">viewservlet.jar</span><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">下找到</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">org/eclipse/birt/report/utility</span><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">下找到</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">ParameterAccessor.class</span></span></span><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'"><span style="font-size: 12pt"><span style="font-size: 12pt">文件，现在要修改这个文件的源代码，&nbsp; </span></span></p>
<p class="MsoNormal"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你可以在你从</span><span lang="EN-US">CVS</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中签出的源代码中的</span><span lang="EN-US">org.eclipse.birt.report.viewer/birt/WEB-INF/classes/org/eclipse/birt/report/utility</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件夹中找到</span><span lang="EN-US">ParameterAccessor.java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件，在这个</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中找到这行：</span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="font-size: 12pt"><span style="font-size: 12pt">public static final String UTF_8_ENCODE = "UTF-8"; //$NON-NLS-1$</span></span></span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span style="font-size: 12pt"><span style="font-size: 12pt">将这行改为</span></span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="font-size: 12pt"><span style="font-size: 12pt">public static final String UTF_8_ENCODE = "GBK"; //$NON-NLS-1$</span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">然后将这个编译好的</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">class</span><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">文件压缩到</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">viewservlets.jar</span><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">的同等目录下，替换原来的文件</span>&#8221;，本人也试了这种方法，但没见凑效，不过上面的解决方法好像是在birt2.1的环境下，这个没仔细试，也许对birt2.1有效吧。</span></span></span></p>
<p><br />
本人使用birt版本2.3，解决办法如下:<br />
在JSP中调用BIRT报表时，传的参数中有中文字符，即URL中包含中文字符，这时在BIRT端接收到的参数拼SQL语句后发现中文字符被转码，造成SQL中的条件不正确。<br />
因为在JSP中调用BIRT是在一个JS脚本中，因此要想办法在JS中先将中文转成UTF-8,并且在BIRT获取参数后再将UTF-8转换回中文即可。<br />
实现代码：<br />
页面JS: <br />
Var mychecktype = &#8220;中文&#8221;;<br />
sqlWhere+="and t.CHECK_TYPE = '"+escape(encodeURI(mychecktype))+"'";</p>
<p>BIRT脚本：<br />
sql+=decodeURI(mycondition);<br />
<br />
</p>
<img src ="http://www.blogjava.net/zilong/aggbug/285089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zilong/" target="_blank">阿伟</a> 2009-07-02 09:56 <a href="http://www.blogjava.net/zilong/archive/2009/07/02/285089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>