那些年跳过的坑--编码格式(记事本 + WinSCP + MyEclipse)

来源:互联网 发布:telnet端口不通 编辑:程序博客网 时间:2024/06/07 22:59

那些年跳过的坑–编码格式(记事本 + WinSCP + MyEclipse)

背景

公司有一个java开发的项目,部署在Linux下的Tomcat上。目前本人主要做.NET方面的开发,由于员工离职问题,被公司临时安排去修改项目的数据库连接。

根据同事编写的项目部署手册,我需要做一下操作:
- 用WinSCP连接到Linux服务器,找到项目配置文件jdbc.properties,然后修改数据库连接字符串(我只需要改换成新的数据库IP地址)
- 重新启动Tomcat

处理过程(开始挖坑)

  • 用WinSCP连接到Linux服务器,找到项目配置文件jdbc.properties
  • 直接在WinSCP中双击jdbc.properties文件,文件默认被记事本打开
  • 在记事本中修改数据库连接字符串,然后保存
  • 重新启动Tomcat

刷新程序界面,没有出现我预想到的界面(界面中没有数据),哪里出问题了呢?

解决问题过程(开始跳坑)

之前没有玩过Linux,并且不熟悉Java项目。
首先怀疑自己重启Tomcat出问题了。查看logs文件夹下的log日志,没有报错。奇怪的是,运行程序(刷新界面)也没有报错,只是界面读不到数据。上网搜索了好多重启Tomcat的命令和方法,都不行。由于暂时排除了,tomcat的原因。
然后怀疑自己连接字符串格式不对。有上网查看java连接oracle的连接字符(本来自己只是修改了IP,格式并没有修改)。最后无果。
折腾了2个小时后,跟之前的同事打电话,他给出一个关键信息。直接在WinSCP中双击jdbc.properties文件修改,可能会出现编码问题。最好是现将jdbc.properties文件下载到本地,修改后,在上传到服务器。欣喜若狂,以为看到了曙光,扒了几口饭就赶紧回去尝试新方案。
回到座位,下载jdbc.properties文件,默认记事本打开,然后修改,上传服务器,重新启动tomcat,刷新页面。——数据依然没有加载出来。
然后开始怀疑新迁移的数据库字符集有问题,就下来就是各种数据库验证了……
最后实在没有办法了,只好使用MyEclipse重新编译程序,编译是直接在MyEclipse中修改jdbc.properties文件,然后生成war,部署。奇迹出现了,程序可以加载出来数据了。搞定了。

详解这个坑

思考整个过程,编译前后,针对jdbc.properties文件的修改唯一不同的就是使用的编辑器不同,一个是使用记事本,一个是MyEclipse。细思极恐,立马查看本机记事本的默认编码格式–GB 2312,而MyEclipse使用的UTF-8。问题原来在这里。为了验证是编码的问题,这一次从linux上下载jdbc.properties,然后使用记事本修改到原来的数据库连接字符串,然后以UTF-8编码格式重新保存,上传服务器,重启Tomcat,程序运行正常。

总结

  • 两个文档,肉眼看到的内容一样,但本质可能并不一样(编码格式可能不同)。
  • 电脑阅读文档分析的是编码格式,所以人眼觉得相同的两个文档,在电脑看来未必相同。
  • 对于修改文档或者配置文件这种事情,尽量使用专业的编辑工具(notepad++等)。
  • #### 本案例中,最佳解决方案是在Linux环境中,直接使用vi修改jdbc.properties文件。
原创粉丝点击