我今天写了一个java程序,我发现只要我改动config.properties这个文件就会程序问题.

我只要改动右边的记事本就会出现左边的问题.比如我在北京两个字上面覆盖北京两个字它就会出错,我从eclipse里面复制config.properties过来粘贴覆盖原来的就能执行了.可是我不能总给人家复制啊.我另保存改保存的编码方式也不对.

这是一小段读取代码.求助各位大神.非常感谢.

第1个回答  2013-09-16

把这段代码该下  

String readexcel= (String)rb.getString("readdatabase");


你试下,可以请采纳

追问

你这样会导致这个错误.

数据库有汉字

第2个回答  2013-09-16
保存的文件,要是utf-8编码。

建议用XML的格式的,Properties 支持的。追问

xml里面代码太多,我怕别人看不到,改一个东西天天问.这样就不好了.

第3个回答  2013-09-16
配置文件如果用记事本打开会出现编码的问题,用notepad++这样的工具打开,如果保存还是有问题,该工具提供转码,导航了,格式>选择UTF-8无BOM格式追问

还得下个软件啊?别人使用是不是都得下载一个软件啊.这方法有点行不通.我这个工具给别人用的.

追答

你是bat执行程序,应该就是编码的问题,这个我之前写了脚本是负责定时重启一个程序用的,用记事本打开后bat程序就无法正常解码了,bat是怎么写的,能贴图嘛,这个看上去bat运行java时,缺少必要的包文件

追问

这样.你说的不错,只要用记事本打开了,编辑然后保存就会出现运行失败.如果我直接把config.properties这个文件从eclipse哪里粘贴过来还是能用的.嘻嘻.我发现了,用Editplus这类不是记事本的软件打开后编辑保存也能运行.

第4个回答  2013-09-16
感觉一般都是编码的问题, 可以确定一下eclipse的里面的编码,是不是与文本编辑器的编码不一样 导致保存的时候报错, 如果不是可以帖一下error massage追问

eclipse里面调试没有问题,改这里面的文件名字也不会出错.就是农村bat运行才有错.

第5个回答  2013-09-16
在你的config.properties文件右键 >>properties>>设置字符集 UTF-8啊追问

呵呵.这个没用.

追答

class Test
{
public static void main(String[] args)
{
Properties pps=System.getProperties();
pps.list(System.out);
System.out.println("--------------------以上为JVM的所有属性值-------------");
System.out.print("系统默认的字符集为:");
String name=System.getProperty("sun.jnu.encoding");
System.out.print(name);

}
}你试试你的字符集是什么

追问

GBK啊,有问题吗?我下面获取到的内容都编码了.

第6个回答  2013-09-16
表示压根没明白想要问的是什么,路过拿分走人追问

再看看呗.好歹你也是个知道达人啊.嘻嘻

追答

又重新看了一次,话说你使用ResourceBundle进行解析,为什么配置文件中的中文不进行编码呢?你在Eclipse中直接设置中文可以,那是因为Eclipse帮你进行了转码的工作哦,你如果使用记事本,它就没有进行转码了呢

追问

那么我该怎么转码,在获取到数据记事本内容的代码里面转码?

追答

你读取配置文件的代码都是一个模式,即

new String(rb.getString("xxx").getBytes("iso-8859-1"), "utf-8")

那么就是说,你所有的字符串拿到手之后,都会先进行iso-8859-1编码,之后再用utf-8进行解码,所以你的文件必须是以iso-8859-1的编码进行保存,所以你必须先确认你的文件保存编码是否是iso-8859-1,其实不用不用确定也知道肯定不是的,因为的你文件用记事本打开,你的中文并没有显示乱码,所以你的文件保存格式肯定是支持中文的,但是iso-8859-1本身是不支持中文编码的


所以建议你修改下你读取配置文件的代码

追问

佩服.分析的到位.我最后还有个小小的请求,不用iso-8859-1这个编码用什么?帮忙看看呗.

追答

支持中文的编码gb2312,gbk,utf-8,建议用utf-8,读取方便

追问

String drive = new String(rb.getString("driverClassName").getBytes(
"UTF-8"), "UTF-8");
这样写对吧?还是一样的错误.

追答

好像有点错,刚查看了下文档,ResourceBundle默认用iso-8859-1进行读取,那么你进行转换的代码就没有问题,很抱歉

既然你仍然会出现乱码,那么还是要从你文件的保存格式和jvm默认编码格式上去找问题,你还是确认下你文件的保存编码格式,比如当你原先使用gb2312进行保存,但是打开的时候使用utf-8,这种情况下也许不会出现乱码,但是当你用utf-8进行保存之后,程序读取就会出现乱码
eclipse对有中文的配置文件貌似是默认使用gb2312进行编码的

留给后来人
此问题的原因有别的朋友也已经说到了,就是记事本utf-8编码保存的问题,记事本保存utf-8编码的文档时,会对该文档进行一个签名,使该文件的实际编码转变成utf-8 + bom(签名格式,真心蛋疼微软),很不幸,ResourceBundle类进行配置文件的读取,不会对签名进行处理,所以产生了这个问题。解决的办法是,要么不要使用记事本进行配置文件的更改,比如使用editplus之类的,都不会导致这个问题。当然,如果一定要让记事本可以更改,那么将配置文件保存成GBK编码也不错

本回答被提问者采纳

java程序读取properties配置文件出现中文乱码
第一种办法:如楼上所说的那样也可以,就是native2ascii -reverse -encoding gb2312 user.properties ActionName_zh_CN.properties这样以后,你打开ActionName_zh_CN.properties的内容,再将ActionName_zh_CN.properties文件这样置:native2ascii ActionName_zh_CN.properties userChange.properties 然后你的...

五种方式让你在java中读取properties文件内容不再是难题
1. **通过context:property-placeholder加载配置文件 使用``加载配置文件,简化配置。注意:在`spring-mvc.xml`文件中进行配置时,确保使用`context:component-scan`标签,并设置`use-default-filters="false"`,以避免不必要的加载。2. **使用注解注入 在代码中使用`@Value`注解注入properties文件中的值。

java程序读取properties配置文件出现中文乱码
首先,可以使用native2ascii工具进行转换。执行命令"native2ascii -reverse -encoding gb2312 ***.properties",将原始文件转换为ActioName_zh_***.properties。然后,打开转换后的文件,将内容重新写入***.properties。这样,程序读取***.properties时就能正确处理中文了。另一种方法是,在代码中添加转换...

请java大神看看我这个配置文件怎么读取不了?
1、获得文件时,不要调用getClassLoader()方法。因为该调用该方法后,会默认在项目根路径下,寻找需要读取的文件。但是你的config.properties在根目录下的CESHI包下,所以最终导致路径错误。图1 2、如果要使用getClassLoader()方法,则可以添加上包名称,即:CESHI\/config.properties。图2 ...

java中的properties文件放在什么地方
JSP的应用吧?!把config.properties放到WEB-INF\\classes下,然后JAVA程序中用“\/config.properties”。如下:p.load(getClass().getResourceAsStream("\/config.properties"));

***.properties的作用是什么?求详解
properties文件是Java编程语言中常用的一种配置文件类型,通常用于存储配置信息或属性值。这种文件以纯文本形式存储数据,方便进行编辑和修改。在Java应用程序中,可以通过properties类来读取和写入properties文件中的数据。二、properties文件的用途 在Java项目中,我们常常需要配置数据库连接参数、系统环境变量、应用...

properties 是什么意思
Properties是Java语言中的一个内置类,它用于读取和写入配置文件。配置文件通常是包括了键值对信息的文本文件,这些信息被用于配置应用程序的行为。Properties类可以帮助我们方便地读写配置文件,使得我们可以在程序运行时动态地改变应用程序的行为,而无需重新编译和部署应用程序。Properties 的用途 Properties在...

java调用properties文件的问题
Java可使用Properties类读写properties,具体说明如下:1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字符串类型。2.Properties中的主要方法 (1)load(InputStream inStream)这个...

java修改文件内容(java修改文件内容)
Java修改、删除properties文件内容java修改properties文件,参考如下:publicstaticvoidmain(String[]args)throwsException{ Propertiesprop=newProperties();\/\/属性集合对象 FileInputStreamfis=newFileInputStream("src\/test.properties");\/\/属性文件输入流 prop.load(fis);\/\/将属性文件流装载到Properties对象中 ...

java程序打包后的相对路径的问题,急!!
没必要写那么多path,直接FileInputStream in = new FileInputStream("config.properties”);然后别把config.properties文件打包到jar里面,放在同一个目录下就行了。

相似回答