做完作业,看看新技术
昨天做完了作业,所以今天是一个相对自由的日子。
GF说她喜欢看Friends,我就把十季都给她下来了,结果带动我也一块儿看,主要是想联系一下听力。很幽默,而且经常围绕Sex,呵呵,看起来挺新鲜的……
而今天的最重要的工作其实是研究一下MyEclipse等一堆新技术。
先看了一下MyEclipse 4.0 M2的一些新的支持,然后以此为起点开始学习它支持的一些新的框架。Hibernate、Struts、JSTL这些用过,只是修改了版本,所以没有更着重于发现。
不过发现对Hibernate3的支持中,MyEclipse可以自动生成SessionFactory,挺好,如果没有写服务的话用这个统一的Session管理也是很好的。
从简单到复杂吧:
1、首先看了JSF:这个东西经常听说,是Sun主推的,把界面完全面向对象化,组件化,是Web里面比较有潜力的一个框架。但是这个东西似乎发展的很慢。我发现Sun推的东西总是
比较难以迅速普及,真可怜。大家都在抱怨这个框架没有好的例子,用的人似乎不多,总是处于开发阶段,什么都不太成熟。但是看程序员介绍Java Web Creator可以直接集成开
发JSF应用,看起来不错,因为好的IDE是效率的保证。研究了一下发展趋势我就没有进一步的研究技术细节,不过了解到JSF偏向程序员的观点,面向对象特性非常好,不过我本人
倒是对这个无所谓,因为界面本来就不应该是程序员写的,界面也根本不必要面向对象。我这么说肯定很多人不同意,也许都是程序员吧:D
2、看了看Tapestry:说实话,这个东西真的是让我非常兴奋。Apache jakarta项目下面的一个框架,东西比较轻量,是一个简单清晰的MVC实现。它的Controler层比较多的依赖后
面的商业逻辑,这样的设计个人感觉会提高效率,并且队分层的清晰没有影响。如果前面用个Struts那样的重一些的框架,分层的时候经常会过度设计,后果嘛,嘿嘿,就是运行
慢维护繁琐。
我最欣赏Tapestry的地方在于它很好的解决了分工问题,它明确的将显示叫给html,而将业务代码巧妙的隐藏在html tag的属性里面,对页面代码的侵入非常的小,所以它的模版
页面都可以用Dreamweaver这样的WYSIWYG设计工具来开发。考!这可是绝对的好消息,这样美工就是美工,程序员就是程序员,不会让程序员拿着美工的页面胡乱修改造成显示效
果差强人意了(呵呵,有点偏袒美工)。程序员的逻辑方在于html绑定的配置里面,Tapestry有两种常用组件,一个是Page一个是Component,一个渲染页面一个是抽象的页面组件
,反正都是面对显示的界面,非常适合做Web方式的J2EE表现层。
另一个令人感觉舒服的地方是分散的配置,看一看典型的Tapestry配置都很简单,一个.application里面只需要配置一些程序级别的设置。而所有的页面和动作都可以分散部
署,.html和.page或者.jwc关联确定一个动作或者页面设置,同时可以调用后面的Java Bean,相互比较独立,不用集中描述部署符,可能比较适合我的思维方式吧。同时Tapestry
也支持多语言,每个页面或者组件都可以对应多种语言,可以通过.html的命名方式或者关联的properties命名来支持多语言,分开的描述还是很舒服。
还有个地方,发现Tapestry的所有后面的Action都是Abstract的,看了说明,它服务的时候会动态派生具体类运行,这样的并发多线程挺好玩,具体优略就不得而知了,但是估计
不错,要不为什么特别亮出来Show。
然后,事实上,我跑了一个Tepestry的HellowWorld,然后修改了些动态的东西,体验了一把新技术就放弃了,放弃的原因主要如下:
因为正在开发的项目用Struts,用了titles来管理布局。以前用惯了JSP:include,而Tepestry里面没有直接的布局类,现在的东西移植不过去,找了一下真的没有特别好的实现。
用了一个特别的html兼容模版结构就没法用jsp里面那些第三方插件库了,这个是个损失,有得必有失。发现Tepestry的程序做简单的项目的比较多,大一点的估计就Appfuse有了
,没有经历仔细研究,放弃了。不过看到Sitemesh这种开放的布局框架可以与Tepestry结合,弥补这方面的缺陷,Appfuse就是这么实现的。
Tepestry对我的另一个打击是刚刚出了Tepestry 4.0Beta2,而且似乎很快就可以正式版了。而现在的仅有的书Tepestry in action是对应3.0的,其他的文章和例子也都是3.0的。
去官方网站发现Tepestry 3.0和4.0的区别是很大的,开源框架从来都是这样,整数版本号一变化就别想平滑升级了,头疼头疼。我仔细看着Tepestry的官方的上手指南开发,不过
我的Myeclipse是只支持3.0的,麻烦,搞了半天,到后来的复杂的例子总是调试不好,发现都是版本冲突造成,变化太大,我又不熟悉,所以干脆就放弃了。干脆等版本稳定一些
再仔细学习吧。同时提一下Tepestry现在年轻气盛,本身很优秀,但是文档很少,中文文档更少,官方网站也提出目前Document还不完善,所以还是要等社区建立好一点,我再入
手吧。
顺便抱怨一下,Struts 1.1 to 1.2,Hibernate 2 to 3,Spring 1.1 to 1.2变化都特别大,学习资料互相冲突,原来的代码都需要比较多的修改才能部署,让新入手的人碰壁再
碰壁,没办法呀……,开源的进化就是跳跃性的。
4、看了看Appfuse。不想多说了,造就下载了,当时没有搞定。但是当初为了这个才装了Ant,才有了后来的学习……这次再挑战,我又是走了无数的弯路,一直ant install-xxx
、ant new、ant这样的运行修改,怎么都搞不定。其中引出修改Tomcat配置符,修改Mysql密码等一系列问题,不多说了。我把Tomcat自动部署从Build.xml中注释掉了,最后发现
用ant setup就可以安装了,靠,他们说明文档怎么不写清楚,我编译的是Struts+Spring+Hibernate的版本,准备对比不同版本研究一下这个程序。说实话能把它部署上真的是太
好了,本来很简单我却走了那么多弯路,可惜,不过有了这样的Demo,估计对以后的开发有帮助。其实在这之前我还花了大量时间调试Spring+Struts+Hibernate组合,在
Myeclipse里面,不过没有搞定,主要是嫌麻烦,写了一半又删掉了,然后又想写……反正耽误了不少时间,以后应该减少这样的事。
5、下载了马达加斯加、史密斯夫妇、马拉松、世界大战这几个电影,都是比价期待的,发现品质还都可以接受,呵呵,周末和她一块儿看。
6、前两天把和平之月一个系列的Mp3全部下载了,真的是很棒的世界音乐。可以去Verycd搜索和平之月,我下了2x张专辑,这是一个唱片公司的厂牌,所以专辑众多,都是亚洲风
情的。
7、升级了下我的ant,忘记说了,否则无法运行appfuse,它需要1.6.2以上的ant,最新好像是1.6.5。我发现ant.apache.org访问不了,很久以前就不行,下载真的挺麻烦的。奥
,对了,还有andromdaMDA,这个东西是个开源的MDA,对于Hibernate开发可以把数据库设计->映射->Pojo这样的过程反过来,建模->生成POJO和映射->数据库设计,也就是模型驱
动开发,有时间研究一下。
Ant可以去这里:http://mirrors.isc.org/pub/apache/ant/binaries/apache-ant-1.6.5-bin.zip
或者这里:http://www.javaresearch.org/members/jross/ant/apache-ant-1.6.2-bin.zip
8、张楚推荐了这个Video:
http://www.nytimes.com/video/src/2005/06/29/technology/highbandwidth/windowsmedia/20050629_GUEST_VIDEO_HI.asx
号称iPod flea,iPod跳蚤,很搞笑的讽刺了Apple:D
9、周日看了Jobs在斯坦福的毕业典礼上的讲话,很受感动,推荐大家Google一下看看。Jobs是Apple的传奇CEO。
今年是本命年~
微软的鼠标质保真是个问题!
1、我的光学银光鲨4.0也就是IE4.0坏掉了,左键失灵经常单击失败、双击失败、单击变双击,这些毛病交替出现电脑都没法用了。暂时用了IE3.0。
2、托我爸爸给我送修IE4.0,我这个是盒装的。我本来打北纬(原微软硬件代理)没有人接,然后让我爸直接送以前去过的理想大厦地下一层了。结果被告知北纬不负责IE4.0的保修,说已经转给讯宜了,这个代理我们都熟就是做精英ECS起家的那个。我爸爸 给讯宜打电话,他们要求先给他们序列号,不告诉他们的地址,结果告知我的IE4.0没有在他们的产品序列号库里面!靠,我中文盒装,保修卡注册卡所有都是齐全的,怎么可能不是行货。北纬都说这是他们的货!结果讯宜说不在他们的库里面。我不愿让我爸为难,让 他赶快回来。
3、我继续电话找讯宜,问了他们我的所有疑问,反正他们说北纬给了他们所有他们卖出来的正品IE4.0的序列号,而我的不在里面,他们要我去找北纬确认。我找北纬继续没人接电话。然后我气急败坏的给微软打电话,他们态度非常好,但是提供的答案非常让人失望 ,他们说讯宜说没有我的序列号就说明我这个不是水货或者是假冒产品,说不用找北纬了,北纬已经没有代理资格了。我真是非常的生气,北纬的保修的人看了我的IE4.0的盒子都信誓旦旦的说这个肯定是他们的行货,而且说只要是这种完整的中文包装肯定是行货!我 仔细看了,我这个盒子和鼠标没有伪造的嫌疑。而且咨询了卖给我鼠标的momoko,他也说是他朋友找微软进的货,肯定行货。我,我是没地方评理了。
4、我怀疑应该还是北纬当时有地下操作的可能,不过这种操作的受害者不应该是以行货价格购入IE4.0的最终用户!而应该由北纬负责。况且讯宜完全应该保证数据库的完整,并且通过包装盒的确认来辨别行货!因为他们的数据库很有可能有纰漏的,作为一个懂得程 序的人这个都能理解。可是做售后服务的人肯定是拿鸡毛当令箭,而我作为一个弱小的消费者哪里有精力跟他们较真,认栽好了。
5、然后干脆自己动手……没有买到一样质量的微动,找到的替换品5毛钱一个,个人感觉手感太差。所以干脆把侧键的前进键和我的左键交换了。IE4.0的纵横滚轮那一块的结构真实够复杂的,拆起来修真的挺费时,老是怕把塑料件给搞坏了,还好,最终没有搞坏什 么东西。用吸锡烙铁拆了两个微动,交换焊接,5分钟搞定。装起来试验,没有问题了。但是,我确定IE4的微动的寿命绝对有问题,我用的非常爱护还是出现这样的问题,哎,我发誓,我下次绝对不买微软的鼠标了,除非他实际加强品控和渠道建设!
解读Wave文件头结构
我发现对应C语言里面的字WORD(32位),16进制文件对应2个字节(Byte),而DWORD(64位),对应4个字节。
然后顺便普及一下16进制文件的存储规律,对于WORD,先存储低位字节,然后存储高位字节,而DWORD,则先存储低两位的低位,然后是低两位的高位,然后是高两位的低位,然后是高两位的高位。
介绍一下WAVE文件的结构:
标志符(RIFF)
数据大小
格式类型("WAVE")
"fmt"
Sizeof(PCMWAVEFORMAT)
PCMWAVEFORMAT
"data"
声音数据大小
声音数据
查到C语言中对应的WAV的文件头结构如下:
Typedef struct
{
WAVEFORMAT wf;//波形格式;
WORD wBitsPerSample;//WAVE文件的采样大小;
}PCMWAVEFORMAT;
WAVEFORMAT结构定义如下:
typedef struct
{
WORD wFormatag;//编码格式,包括WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM等
WORD nChannls;//声道数,单声道为1,双声道为2;
DWORD nSamplesPerSec;//采样频率;
DWORD nAvgBytesperSec;//每秒的数据量;
WORD nBlockAlign;//块对齐;
}WAVEFORMAT;
然后我们根据实际的一个文件的文件头进行对比分析,然后大家就应该明白了:
首先是一串“52 49 46 46”这个是Ascii字符“RIFF”,这部分是固定格式,表明这是一个WAVE文件头。
然后是“E4 3C 00 00”,这个是我这个WAV文件的数据大小,记住这个大小是包括头文件的一部分的,包括除了前面8个字节的所有字节,也就等于文件总字节数减去8。这是一个DWORD,我这个文件对应是15588。
然后是“57 41 56 45 66 6D 74 20”,也是Ascii字符“WAVEfmt”,这部分是固定格式。
然后是PCMWAVEFORMAT部分,可以对照一下上面的struct定义,首先就是一个WAVEFORMAT的struct。
随后是“10 00 00 00”,这是一个DWORD,对应数字16,这个对应定义中的Sizeof(PCMWAVEFORMAT),后面我们可以看到这个段内容正好是16个字节。
随后的字节是“01 00”,这是一个WORD,对应定义为编码格式“WAVE_FORMAT_PCM”,我们一般用的是这个。
随后的是“01 00”,这是一个WORD,对应数字1,表示声道数为1,这是个单声道Wav。
随后的是“22 56 00 00”,这是一个DWORD,对应数字22050,代表的是采样频率22050。
随后的是“44 AC 00 00”,这是一个DWORD,对应数字44100,代表的是每秒的数据量。
然后是“02 00”,这是一个WORD,对应数字是2,表示块对齐的内容,含义不太清楚。
然后是“10 00”,这是一个WORD,对应WAVE文件的采样大小,数值为16,采样大小为16Bits。
然后是一串“64 61 74 61”,这个是Ascii字符“data”,标示头结束,开始数据区域。
而后是数据区的开头,有一个DWORD,我这里的字符是“C0 3C 00 00”,对应的十进制数为15552,看一下前面正好可以看到,文件大小是15596,其中到“data”标志出现为止的头是40个字节,再减去这个标志的4个字节正好是15552,再往后面就是真正的Wave文件的数据体了,头文件的解析就到这里。
下面从别人的文章转述文件体的数据格式:
16位单声道:
采样一(低字节、高字节),采样二(低字节、高字节),……
16位双声道:
采样一[左声道(低字节、高字节)、右声道(低字节、高字节)],……
Sin City是个不错的电影
几个不说不快的不快!
2、翻译,三个人一块儿翻译,语音联系中进行翻译。每个人的翻译有自己的思维烙印,强迫统一真的很难。我觉得大部分精力都花在沟通上了。其实每个人翻译一部分也就差不多了。准备翻译的是这本书John Wiley & Sons – Software Testing Fundamentals,也许要花3个月,前提是出版社同意的话。这一小段只是表达想法,这个并不是不快。
3、然后是最烦的。在周六早上发现钱包不见了,一直放在我的小背包里面的,这两天没有用到。本来以为是掉在哪里了,可是没有找到,心里想也许……没那么倒霉吧。着急出去找ZZ,就走了。正巧,钱包里没有现金,本来有100的,周四给ZZ买了张电话充值卡花掉了,她还我的钱放到兜里面了,还在。路上想到应该先查一下卡的钱。到ZZ家,马上上网查我的一卡通,这个最担心,因
4、然后就是马上通知我爸爸去挂失掉工商银行的卡,不过还好这个卡密码不是什么生日,放心一些。我爸爸在工商银行拿户口本等一大堆证件挂失,结果不知道卡号,用存折查确不知道存折密码(存折是北航给办的,我不知道密码,或者是我爸爸输入错了)。结果咨询以后人家告知没法挂失……办事效率极低……人家说要到开户行挂失。我想明天再说,因为北航太远了。
5、晚上回家,我想起这个牡丹灵通卡是前不久换过的,有手续的内容。找到卡号,上网登陆工商行网络银行(型号前一段时间用过,开通了),然后察看钱没有被取走,然后马上也网上挂失了。但是接到提示,说这是临时挂失,还需要去储蓄所重新挂失。
6、我去了储蓄所,带上了户口本和那个手续,还有存折。结果工商行的人说要挂失一定要知道卡号、存折号、两个的密码才可以挂失,要我必须要到开户行才可以。我说我只是想保证我的钱的安全就可以了,他们表示没有办法保证。我很生气!
7、回家,打95588,工商行服务。我想投诉,电话占线了半天以后他们告知储蓄所说的不对,在电话里挂失就可以保证钱的安全,而且只需指导卡的密码就可以挂失。然后我就电话挂失,结果又被告知已经网上挂失了,不用再挂失了,说已经保证钱的安全了。我问他们有我的身份证能不能给我消户,他们告知不能,七天以内可以代办挂失,但是必须要代办人的身份整,而且不能把钱取走
8、然后继续接受折磨……我去了厂桥派出所,准备报案,这是个错误的决定。到了派出所的接待处,根本没人,听远处的办公室有说笑的声音,我壮胆走过去。我跟警察讲了所有的情况,然后那些警察一个个都用鄙视/歧视的眼光扫着我,然后要我说出钱包在哪里丢的什么时间丢的等等要求一定要非常的详细……我跟他们说周四晚上我见过钱包,周六早上发现丢了,周五中午我还发现卡里的钱还在这些情况。结果警察一下子就非常生气要我要非常的严肃,说已定要告诉他们钱包到底在哪里丢的,准确的丢失时间,然后我说我要是知道不就不会丢了么?找不到才来报案的,况且被取走了钱都是可以查监控录像的。他们就轮流教育我(这个时候大约有6、7个警察在喝茶抽烟,都七扭八歪的坐在椅子上),教育我一定要清楚他们才能调查、才能立案、才能抓小偷等等……教育完我说可能是公共汽车吧,这两天坐过115、13公共汽车,卡是招商银行的等等。然后可爱的警察叔叔又用不耐烦地语气教育我一定要严肃,确定哪路车哪一站丢的,哪天……我晕菜了……而且他们告诉我哪里丢的他们会告诉我去哪里报案,而且暗示我不要烦他们了,也不要在这里报案!我很无奈,问能不能报案?他们说他们没法逼我报案或者不报案,而且强调我一定要严肃对待这个问题,不要耍他们……我,我干脆问,我身份证丢了,我不报案了,我想办个身份证。他们更不耐烦了,问你那儿的?我说就长桥的,他们笑了,去旁边办吧。我脚底抹油直接溜了,我一点都不想说再见!我们可是纳税人,你们……我爸爸说他们不愿意让我报案,是因为在哪里保安那里的发案率会上升,影响他们的绩效,所以尽力推托。
9、重新办身份证。正好要办二代身份证呢。交钱照相。一头汗,头发也有点乱,这次的身份证照片依然不怎么入目。
10、继续散心,和ZZ,基本上希望由此忘记这个丢钱包的噩梦。不过心里是接受了教训了:证件要和银行卡分开存放,不要用弱密码、上车包更加注意、小案件不要报案或者编好瞎话再报案、经常检查钱包丢了马上挂失、挂失可以通过电话/网上且越快越好。
11、损失列表:钱包一个、Diablo人物卡片一张、身份证、零钱2.xx元、几张过期的票、四张银行卡(两张没钱的废卡),招商银行卡里的800元,还有几张纸片。
Eclipse3.1和Myeclipse 4.0M2
今天听说这两个都更新了,我就去马上下载下来试验了一下。(Eclipse是一个很好的IDE,特有超强的插件结构……,Eclipse的直接发行版本进行Java开发很好。Myeclipse是一个Eclipse插件,支持J2EE开发,整合了Struts、Hibernate支持等等,开发J2EE的非常好用的平台。)
地址如下,Eclipse Release Build: 3.1:
http://download.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/index.php
MyEclipse Enterprise Workbench 4.0 M2 for Windows 98/2000/XP (6/28/2005):
http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-10.html刚才试验了一下,EC的界面相应速度明显变快了。Myec运行也很正常,部分图标改变了,能够正常代开以前的工程,也不许要额外的设置,一会儿看看注册是否正常,估计问题不大。
大家有时间可以来试验一下。
Lost in UML
原因是高级系统分析与设计的倒霉作业,哎,痛苦奋战了3天有余……
哎,不认真学习和听课还有看书就是不行,什么概念都不清楚……
我对UML的认识就是几张图,别B4我。
不过花了些时间研究UML Modeling工具:
1、Rose这个不说,ZH说体积达到2G,靠我可不愿意和这种巨无霸为伍,想起来就晕。而且听我一些Buddy说这东西比较容易死机的
2、以前用过Visio,我觉得很好用。不过一些朋友说不标准等等,而且仅限于画图,我就准备学个新的。
3、然后就学习了停很多人说的非常伟大的Borland公司的Together,而且学习了其中和时髦的Eclipse结合的Together for
4、然后,下载了最新的版本Together fo EC 7.0,然后找了破解,因为这个东西不注册连界面都看不到。结果伟大的Shock(一个
5、Together for EC 7.0居然没有画图的图例……我就特别天真的用树模型建模,企图表示用力关联,结果怎么也搞不定,大约花
6、柳暗花明,我又装了Together for EC 6.3,带破解,可以运行。一进去发现明显有图例工具的!这时候我才发现也许我用的
7、研究Togther 6.3,先画了用例图,同时写作业前面的内容,画好了,要导出到Word,结果傻眼了,倒霉的Together居然只支持
8、说起SVG,那是当初ADOBE为了和Micromedia的Flash对抗推出的一种适量图像标准,文件基于XML,架构优良……不过哪里架得
9、话说我也倒霉,我就妥协了。我干脆去截图……花了很久时间截图,就为了赶在上课前交作业……
10、结果很简单,这种效率下,没有按时完成作业,硬着头皮去上课了……
11、结果很幸运,宋同学和郑同学还有王庆华同学都没有完成作业,心里窃喜,嘿嘿,法不敌众呀,哈哈哈哈:D……
12、又受刺激,听了ZH同学说,原来作业里不只需要用力图,还要用例规约、类图、顺序图、写作图……我考,我当场眼冒金星险
13、回家我发誓我要搞定它!这里的它指Together for EC生成的.svg文件。首先解决默认.svg中文乱码的问题(考,这么到处都
14、然后继续努力,发现原来ADOBE的illustrator(就是我画美事同盟LOGO那个软件)可以打开.svg的,有了它就可以转换格式了
15、先把这些用力图搞定,然后画了顺序图、类图什么的把作业搞定了。
16、然后我觉得Together不过如此,可能比较偏向于Team的过程的解决或者说MDA的解决,它并不是最关注建模本身还有画图这个
17、宋同学给我推荐了一个获得Jolt大奖的建模工具,说它很有可能很牛。回去查了一下,它就是这个东西:“Smart
18、关于Smart Development Environment
Smart Development Environment ( SDE ),是赢得该荣誉的UML建模工具,它是可以应用于各种IDE如Visual Studio .Net,
http://www.umlchina.com/News/Content/200.htm
19、恩,要试验一下,搜索到这个东西是visual-paradigm开发的,官方网站在这里,我给一下下载的页面:
http://www.visual-paradigm.com/download/
20、我下载了Visual Paradigm Suite 2.0,里面包括所有需要的东西,包括一个主程序和各个IDE的插件。我下载并安装了,看起
到这里这个Lost in UML就写完了,我真的是迷茫了,看了高级系统分析与设计的课件、谭火彬的UML课间、下载了基本Java UML的
BTW:写这个时我键盘旁边的杯子又倒了,真是和前几天的经历一样倒霉,这次键盘没有遭殃,我的床彻底湿了……这里善意的劝
Eclipse和UTF-8及Unicode的研究
说研究就研究,尽量一丝不苟。
仔细研究了一下我们那个Properties的过程,发现原理是这个样子的。
首先对比了一下文件的Hex的编码情况:
使用记事本存储“我是人”三个字,发现如下:
首先可以发现Unicode、Unicode-Bigendin前面都有辨别码,分别是FF EF、EF FF,以此区别编码序列,也同时声明了这是一个Unicode的文件。每一个汉字使用两个字节。也就是说用的是UCS-4。
而UTF-8也使用了辨别码,但所有UTF-8字符都是3个字节的,辩证码是EF BB BF,和Unicode的辩证码其实是一个字符。每个汉字用3个字节表示。学习相关知识可知Unicode和UTF-8是可以直接映射的,两者影射其实是兼容的。
而Ansi模式其实应该使用的是GB2312编码,没有辨别码,所以需要默认的编码,中文Windows就默认GB2312。编码每个中文用2个字节,编码以后的内容和Unicode不同。
继续分析我们开发所用的环境的过程:
首先,分析Eclipse写出来的文件,此时我设置的工作空间编码为UTF-8,发现文件没有辨别码,也就是说这个文件被其他编辑器打开不可能知道这是什么编码。而文件里面其实根本就没有使用UTF-8编码,因为所有的中文都是2个字节的编码。我怀疑是UCS-4,所以分析一下,在刚才用记事本写的文件里面写入“美食同盟网”察看Hex状态的编码。
在Eclipse的文件里面“美”编码0xC3C0。Unicode里面是0x8E7F。Ansi里面是0xC3C0。Unicode-big里面肯定是0X7F8E,和Unicode那个反过来没的说。
所以,呵呵,我想一切旋疑都解开了。我们敬爱的Eclipse不管如何设置,其实他还是使用了你的操作系统的默认编码,而我们这里就是GB2312了,即使我们设置了UTF-8。其实问题是这样的,本来Eclipse默认latin-1编码,如果用那个方式,写了中文的双字节字符以后再打开就会造成乱码,而设置了UTF-8以后能解决以多字节(2个、3个)的方式打开文件的问题,不过其实还是用GB2312打开,这个可能是Eclipse对Properties文件未知格式的原因,因为用Eclipse打开存储UTF-8的XML文件是没有问题的,这个大家都有经验。由于Eclipse的多字节文件没有存储识别码,所以XML文件还有JSP文件的Charset一定要声明UTF-8,否则还是有可能出问题。
然后到这里已经真相大白了,这样再解释一下前几天出现的那些问题:
1、由于单字节多字节的问题和Eclipse不存储识别码的问题,我们最好把工作环境强行换到一个多字节环境,比如UTF-8。防止互相出现乱码,大家最好都用中文的Windows,否则估计还有可能出现问题。
2、解释上次native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResources_zh.properties这个命令,网上那位老兄还说为什么Encoding改成UTF-8不行呢,因为你的Windows默认的就是gb2312,设UTF-8当然乱码。
3、解释native2ascii。其实这个过程和UTF-8没有任何关系,而且编码出来的文件的确是Unicode的转义字符。其实编出来的文件根本本就是最普通的单字节Ascii文件,只不过它把双字节的Hex方式直接用明文存储为单字节Ascii文件了,转换明文使用Big endian方式,也就是高位在后。为什么这样呢,因为Java多字节只支持Unicode,或者说是遗留,反正Java没有直接支持UTF-8,内部传输都使用Unicode。这不是问题,因为映射相同输出的时候Java很容易把Unicode转为UTF-8。而我们转那个文件只不过为了让Java可以轻松的把你的文件从转义字符转化为Unicode,过成就比如把“/uC3C0”这样的自符串转化为“美”的编码0xC3C0了。这么说有点乱,过程其实如下:
“美”在Eclipse存,然后在文件中如果用Hex察看是[C3 C0]。
然后用Native2ascii转,你看不到“美”只能看到\u7f8e,而这时候如果用Hex察看是[5C 75 37 66 38 65]这么大一长串Ascii了。
这次明白了吧。
4、关于UTF-8和Unicode还有UCS的东西大家看看资料吧,一搜一大把。
UTF-8 and Unicode FAQ(中文,这个很官方,很有价值)
http://www.linuxfans.org/nuke/modules.php?name=News&file=article&op=view&sid=1749
谈谈Unicode编码 简要解释UCS/UTF/BMP/BOM(说的很通俗,而且涉及到的细节多,帮助大)
http://news.onlinedown.net/info/13164-1.htm