﻿<?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>C++博客-杰 &amp; C++ &amp; Python &amp; DM-随笔分类-Java</title><link>http://www.cppblog.com/jaysoon/category/19317.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 04 Sep 2012 14:30:38 GMT</lastBuildDate><pubDate>Tue, 04 Sep 2012 14:30:38 GMT</pubDate><ttl>60</ttl><item><title>Java中计算中文的MD5值</title><link>http://www.cppblog.com/jaysoon/archive/2012/08/17/187484.html</link><dc:creator>jaysoon</dc:creator><author>jaysoon</author><pubDate>Fri, 17 Aug 2012 07:32:00 GMT</pubDate><guid>http://www.cppblog.com/jaysoon/archive/2012/08/17/187484.html</guid><wfw:comment>http://www.cppblog.com/jaysoon/comments/187484.html</wfw:comment><comments>http://www.cppblog.com/jaysoon/archive/2012/08/17/187484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jaysoon/comments/commentRss/187484.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jaysoon/services/trackbacks/187484.html</trackback:ping><description><![CDATA[<div>Java中计算中文的MD5值</div> <div> </div> <div>　　前几天的工作中，需要计算中文的MD5值，计算的函数接口及调用方式如下：<br /><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;getMD5(</span><span style="color: #0000FF; ">byte</span><span style="color: #000000; ">[]&nbsp;source);<br />String&nbsp;s&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">中文编码</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />String&nbsp;md5_value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getMD5(s.getBytes());</span></div></div></div> <div>　　其中getBytes函数使用平台默认的字符集将string编码为byte序列。由于平台的中文编码方式可能不同，所以同一中文经过getBytes得到的二进制是不一样的。为保证每次得到的结果一致，或者使用指定的编码方式得到byte序列，应该在getBytes中使用参数。</div> <div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">String&nbsp;md5_value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getMD5(s.getBytes(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">utf-8</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));</span></div>        </div> <div>　　这样得到的值就是一样的。</div><img src ="http://www.cppblog.com/jaysoon/aggbug/187484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jaysoon/" target="_blank">jaysoon</a> 2012-08-17 15:32 <a href="http://www.cppblog.com/jaysoon/archive/2012/08/17/187484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>遇到java与crontab问题</title><link>http://www.cppblog.com/jaysoon/archive/2012/05/14/174859.html</link><dc:creator>jaysoon</dc:creator><author>jaysoon</author><pubDate>Mon, 14 May 2012 07:20:00 GMT</pubDate><guid>http://www.cppblog.com/jaysoon/archive/2012/05/14/174859.html</guid><wfw:comment>http://www.cppblog.com/jaysoon/comments/174859.html</wfw:comment><comments>http://www.cppblog.com/jaysoon/archive/2012/05/14/174859.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jaysoon/comments/commentRss/174859.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jaysoon/services/trackbacks/174859.html</trackback:ping><description><![CDATA[<br />　　<span style="font-size: 14pt;">crontab命令是</span><span style="font-size: 14pt;">Unix/Linux中的一个常用命令，用于设置周期性被执行的指令。没有用过的可以查一下，在运行服务端程序时会</span><span style="font-size: 14pt;">经常用到。</span><br /><br />　　<span style="font-size: 14pt;">程序使用Java读取一个含有中文的文件，进行处理后，将结果写到一个结果文件中。在运行的程序时，出现了这样一个问题：在本地环境下，运行正确；但是当使用crontab定时执行时，得到的却是错误的结果。</span><br /><br /><span style="font-size: 14pt;">　　经过一定的调研发现原来是对crontab的机制没有弄明白导致的。crontab运行程序时，会使用它自己的环境变量，这个环境变量与你本地的环境变量可能会不同。比如，在你本地情况下，环境变量的语言为en_US.UTF-8，而在crontab中，环境变量可能是zh_CN.GBK，这样会导致读写文件时&#8212;&#8212;尤其是读写中文文件时内容编码错误，进而导致结果出错。</span><br /><br /><span style="font-size: 14pt;">　　所以在使用Java读写文件时，一定要指定编码格式，而不是使用环境变量的格式。例如下面的语句用于读取utf-8格式的文件</span>：<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">String&nbsp;encodeType&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">utf-8</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />File&nbsp;in_file&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;File(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">test.txt</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />BufferedReader&nbsp;reader&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BufferedReader(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;InputStreamReader(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;FileInputStream(in_file),&nbsp;encodeType));</span></div>　　<br />　　<span style="font-size: 14pt;">网上也有关于修改crontab环境变量的方法，但是我不建议使用，因为一个系统可能是很多人共用的，修改crontab环境变量可能会引起他人程序的问题，最好修改自己的程序，保证它不依赖具体的环境变量。<br /><br /><br /><br /></span><img src ="http://www.cppblog.com/jaysoon/aggbug/174859.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jaysoon/" target="_blank">jaysoon</a> 2012-05-14 15:20 <a href="http://www.cppblog.com/jaysoon/archive/2012/05/14/174859.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>