java读properties文件乱码,我的properties文件采用uft-8编码
在网上查了好多方法,都试过了,总是乱码,郁闷了啊,到底该怎么做啊?ps.我在eclipse的preferences->contenttypes将properties文件的...
在网上查了好多方法,都试过了,总是乱码,郁闷了啊,到底该怎么做啊?
ps.我在eclipse的preferences->content types将properties文件的默认编码方式设置为了utf-8,话说native2ascii是将其他方式的编码转为utf-8,可是我的properties文件本来就是以utf-8编码的,所以此方法不适合。 展开
ps.我在eclipse的preferences->content types将properties文件的默认编码方式设置为了utf-8,话说native2ascii是将其他方式的编码转为utf-8,可是我的properties文件本来就是以utf-8编码的,所以此方法不适合。 展开
5个回答
展开全部
java读properties文件的时候,只认识ascii码,如\u4e00这种,不认识汉字。
所以你properties文件的编码字符集只要包括ascii码就行,gbk,utf-8神马的都一样
另外native2ascii是把非ascii的转成unicode编码即UTF-16,不是utf-8。
你需要用native2ascii工具把汉字转换成\u4e00这种形式。java程序读的时候,读到\u4e00这几个ascii码,然后把它用unicode编码解释。
所以你properties文件的编码字符集只要包括ascii码就行,gbk,utf-8神马的都一样
另外native2ascii是把非ascii的转成unicode编码即UTF-16,不是utf-8。
你需要用native2ascii工具把汉字转换成\u4e00这种形式。java程序读的时候,读到\u4e00这几个ascii码,然后把它用unicode编码解释。
更多追问追答
追问
额,我这现在更神奇了,我定义了一个:
name=/u6D4B/u8BD5
使用ResourceBundle getString()得到的竟然是"/u6D4B/u8BD5",原样输出来了,没有任何变化,这是怎么回事?
追答
\u是
可以参考
java api 文档,用inputstream,比reader好多了
java.util
类 PropertyResourceBundle
展开全部
还是编码格式的问题。.priperties文件里存的是什么格式,读出来的就是什么格式,如果你显示的格式和存的格式不一样就会乱码,汉字我试了,没有问题。
追问
有没有方法可以看到文件的编码方式呢?
追答
这个只有写的人知道。就像在汇编里内存单元里放了一个值,只有写代码的人知道他放的那个值是代表的什么类型,什么意义。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public List<Map<String,String>> readProerties(String name)
{
List<Map<String,String>> list=new ArrayList<Map<String,String>>();
String str="";
String proPath=ConfigPath.getWebInfPath()+"filePath\\"+name;//路径
Map<String,String> map2=new HashMap<String, String>();
map2.put("lanname",name.substring(0, name.lastIndexOf(".")));
list.add(map2);
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(proPath), "utf-8"));//中文
while ((str = br.readLine()) != null)
{
Map<String,String> map=new HashMap<String, String>();
if(!str.contains("="))
continue;
String [] strs=str.split("=");
map.put("name",strs[0]);
map.put("value",strs[1]);
list.add(map);
}
br.close();
} catch (IOException e) {
logger.error(e);
}
return list;
直接读取就ok了
{
List<Map<String,String>> list=new ArrayList<Map<String,String>>();
String str="";
String proPath=ConfigPath.getWebInfPath()+"filePath\\"+name;//路径
Map<String,String> map2=new HashMap<String, String>();
map2.put("lanname",name.substring(0, name.lastIndexOf(".")));
list.add(map2);
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(proPath), "utf-8"));//中文
while ((str = br.readLine()) != null)
{
Map<String,String> map=new HashMap<String, String>();
if(!str.contains("="))
continue;
String [] strs=str.split("=");
map.put("name",strs[0]);
map.put("value",strs[1]);
list.add(map);
}
br.close();
} catch (IOException e) {
logger.error(e);
}
return list;
直接读取就ok了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询