﻿<?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-北溟有鱼</title><link>http://www.blogjava.net/hellostone/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 10:32:19 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 10:32:19 GMT</pubDate><ttl>60</ttl><item><title>乱码问题总算解决了</title><link>http://www.blogjava.net/hellostone/archive/2009/11/04/301001.html</link><dc:creator>渔人</dc:creator><author>渔人</author><pubDate>Tue, 03 Nov 2009 17:29:00 GMT</pubDate><guid>http://www.blogjava.net/hellostone/archive/2009/11/04/301001.html</guid><wfw:comment>http://www.blogjava.net/hellostone/comments/301001.html</wfw:comment><comments>http://www.blogjava.net/hellostone/archive/2009/11/04/301001.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellostone/comments/commentRss/301001.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellostone/services/trackbacks/301001.html</trackback:ping><description><![CDATA[<div>乱码问题总算解决了。</div>
<div>下面这段代码用来获取文章内容，并通过NekoHTML来解析获得去掉HTML标签的文章内容.标红的地方就是用来设置字符集的，第一个是XML格式的字符集（似乎没什么用），第二个地方是将字符串的内容通过输入流读入，如果不指定的话在GAE中默认的是ISO-8859-1（本地的话以设置的文件的字符类型为主），第三个地方是设置XML解析器的字符集。昨晚就是第二个地方没有设置，导致乱码。在测试的过程中还学到一点：GBK-&gt;ISO-8859-1 的过程是不可逆的，也就是说如果把中文字符转成了ISO-8859-1的话，就再也转不过来了，中文变成了"????"。因此在保险起见，输入输出流在使用的时候最好都加上字符集。</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getContent(String&nbsp;xwnr)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;Exception&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;xml&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&lt;?xml&nbsp;version=\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">1.0</span><span style="color: #000000; ">\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;encoding=\</span><span style="color: #000000; ">"</span><font color="#FF0000">UTF-8</font><span style="color: #000000; ">\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">?&gt;&lt;content&gt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;xwnr&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&lt;/content&gt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOMFragmentParser&nbsp;parser&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;DOMFragmentParser();<br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentFragment&nbsp;node&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;HTMLDocumentImpl().createDocumentFragment();<br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ByteArrayInputStream(xml.getBytes(</span><span style="color: #000000; ">"</span><span style="color: #000000; "><span style="color: red; ">UTF-8</span></span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputSource&nbsp;input&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;InputSource(is);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input.setEncoding(</span><span style="color: #000000; ">"</span><span style="color: #000000; "><span style="color: red; ">UTF-8</span></span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parser.parse(input,&nbsp;node);<br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(IOException&nbsp;e)&nbsp;{<br />
</span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
</span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(SAXException&nbsp;se)&nbsp;{<br />
</span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;se.printStackTrace();<br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;newContent&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;StringBuffer();<br />
</span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.getText(newContent,&nbsp;node);<br />
</span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">String&nbsp;str&nbsp;&nbsp;=&nbsp;&nbsp;(&nbsp;new&nbsp;&nbsp;String(<br />
</span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newContent.toString().getBytes("Windows-1252"),&nbsp;&nbsp;"UTF-8"&nbsp;));</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;newContent.toString();<br />
</span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(str.length()</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">200</span><span style="color: #000000; ">){<br />
</span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;str.substring(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">200</span><span style="color: #000000; ">);<br />
</span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;str;<br />
</span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</div>
<div>今天受到了不少关注，非常高兴，非常感谢支持我的同学们，我会慢慢的将开发的过程写出来与大家分享。<span style="font-size: 13px; ">乱码问题总算解决了。</span></div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #000000; "><br />
</span></div>
<img src ="http://www.blogjava.net/hellostone/aggbug/301001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellostone/" target="_blank">渔人</a> 2009-11-04 01:29 <a href="http://www.blogjava.net/hellostone/archive/2009/11/04/301001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提交了一个GAE应用</title><link>http://www.blogjava.net/hellostone/archive/2009/11/03/300809.html</link><dc:creator>渔人</dc:creator><author>渔人</author><pubDate>Mon, 02 Nov 2009 16:44:00 GMT</pubDate><guid>http://www.blogjava.net/hellostone/archive/2009/11/03/300809.html</guid><wfw:comment>http://www.blogjava.net/hellostone/comments/300809.html</wfw:comment><comments>http://www.blogjava.net/hellostone/archive/2009/11/03/300809.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/hellostone/comments/commentRss/300809.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellostone/services/trackbacks/300809.html</trackback:ping><description><![CDATA[<span style="font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">昨天晚上提交了一个简单的Google Application Engine 应用，是一个简单的网络日志功能。&nbsp;<br />
目前提供的功能有发表日志，查看日志，发表评论的功能，其他的功能打算有空的时候慢慢开发。&nbsp;<br />
该应用程序没有用流行的框架，是我自己拾掇的一个框架，七拼八凑，不过感觉开发还是比较方便，毕竟是自己写的，有什么问题也可以直接找到原因。前台用的是Velocity，一直对这个很感兴趣，感觉小巧方便，语法也比较好理解。一直不怎么喜欢Struts，感觉比较笨重。&nbsp;<br />
中间层用了guice，主要喜欢它的非配置，并赶一下时髦。数据库层就是用GAE支持的JDO。还用了nekoHTML等工具用来解析文章内容等。&nbsp;<br />
主要是写着玩玩，再体验一下Java的开发。有空把开发应用的过程写一下，中间犯的一些错误，我觉得对开发GAE项目的同学可能还是有点帮助的。&nbsp;<br />
应用还没最终结束，我只是每天下班回来写写。&nbsp;<br />
<br />
<br />
欢迎访问：http://qigaozhen.appspot.com/pages/blog.wf&nbsp;<br />
<br />
今天首页上有乱码，应该是我在用nekoHtml解析的时候，没有设置对字符集，明天有空解决。</span>
<img src ="http://www.blogjava.net/hellostone/aggbug/300809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellostone/" target="_blank">渔人</a> 2009-11-03 00:44 <a href="http://www.blogjava.net/hellostone/archive/2009/11/03/300809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>