java写properties时中文问题 小弟在用java写properties类型的文件时,插入中文会被系统自动转换成\u****的字符串,请问如何可以直接写入中文。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 据我所知,不行吧,必须使用\u****,不过你可以自己写一个elipse插件,来做properties的中文可视化的编辑界面。 Java就是必须这样保存中文到Properties中的如果保存和读取都是Java程序,这样你根本无需理会它,反正肯定能够读取正确的如果是另外程序读取,则你自己写保存方法就行了,具体就是你遍历Properties中的所有内容逐行写入文件中 我知道如何吧中文读进来,要进行一次编码转换,就是吧iso-8859-1转换成gbk的就可以了,写的还不知道 resource budle是不是没有直接写入properties文件的方法,自己用文件流往里写???? 我在写xml问题时也出现过这样的写不进去 写进去就自动修改 我查了很久发现 是MS的编码问题不知道你说的是不是也是这样的问题 直接文件流逐行存文件,而不是使用Properties 的默认存方式。这样就可以了。 new String("中文".getBytes("ISO8859_1"), "GBK") 我也遇到过个问题,我就不使用Properties自带的保存功能,自己使用FileWriter写就ok了 你的properties文件,保存的时侯它会以操作系统默认的编码方式保存的,或者是某些编辑器默认的编码方式保存的,所以你在程序里面读取文件的时侯,要进行相应的编码转换,比如你用fileinputstream读取的时侯要指定读取流的编码方式为文件的编码方式。如果编码方式不是gb2312,你可以读取以后再转换编码为gb2312。首先有一点儿,你必须知道properties文件的编码方式! 建议你用xml做配置文件,properties作配置文件是过时的作法,用xml可以指定编码方式,而且读取也不困难。 这个问题我是这样解决的,从java.util.Properties继承一个自己的Properties类,把java.util.Properties源代码的saveConvert拿出来,将下面所示中文转换的代码注释掉即可。转换代码:if ((aChar < 0x0020) || (aChar > 0x007e)) { outBuffer.append('\\'); outBuffer.append('u'); outBuffer.append(toHex((aChar >> 12) & 0xF)); outBuffer.append(toHex((aChar >> 8) & 0xF)); outBuffer.append(toHex((aChar >> 4) & 0xF)); outBuffer.append(toHex( aChar & 0xF));} else { if (specialSaveChars.indexOf(aChar) != -1) outBuffer.append('\\'); outBuffer.append(aChar);} 其实使用Java本身带的都没有什么问题啦,只要你自己看着不爽。我一般都是留着一份原来中文字符的然后使用的时候才native2ascii转换一下,不是太必要自己写一个 回 yangqu(曲洋) 我哪里是团长,分明是小兵。大家的回复,我在试验,等完了之后,就散分。谢谢啦,缘分啊! 你用记事本去写中文在里面存储为.prperties文件, 你看看中文会不会显示? 当然会,但是你转到jsp 叶面里面你试一下,乱码,实际上,插入中文会被系统自动转换成\u****的字符串,这多数是UTF-8的编码,在你用resource budle 获得了这个文件,读取时,是按某个字符集来读取的,除非你自定义。 所以就算你自己写了一个文件,含中文,然后你也必须利用工具转化,我记得在jdk/bin里有个 native2ascii.exe ,他就是可以转换用的。 在读取配置文件的时候,如果是中文的,那么可以把它进行一下转换,String username = new String("我是中国人".getBytes("ISO8859_1"), "GBK") 其实这个问题就不是问题中文保存成\u****其实就是其Unicode,java默认就是Unicode编码的正如上面 vtable9999(肝肝肝肝) 所说,properties类里面的saveConvert会先判断这个字符是否是中文,如果是就会转换成\u****的标准unicode形式.其实这样的形式对于我们使用中文是没有影响的,你读取出来打印一样会是正确的中文显示如果需要看到这个文件的中文显示,你可以使用native2ascii转换过来不过我个人认为这个是没有必要的. 恩,我和ChDw(米) 的方法一样,保留一个中文的,在部署的时候用native2ascii转换一下,这样读取的时候就不存在乱码问题,而且就直接读取就可以了,也不用考虑转码问题 一般我作得項目中也是用ChDw(米) 的方法的 去外企面试的两道笔试题,讨论,求解 菜鸟问题,怎么判断选择性别的时候是男还是女 请打出代码分析下 oracle 中写循环语句 存储过程 如何用Struts标签实现多行提交? JAVA GUI客户端和SERVER通讯的问题 怎么读取不在默认目录下的文件 java多线程分片处理大文本文件 关于数组的问题!(立即送分) 谢谢各位对我发的帖子的关心和帮助!但是麻烦又来了!详细请进。。。!!我已经没有分了!帮帮我!up也欢迎! jvm内存不足时程序会出现什么例外呢?? 请下海50米救我...提高jsp数据库连接速度........ 正则表达式的问题,着急啊,请大家帮忙
if ((aChar < 0x0020) || (aChar > 0x007e)) {
outBuffer.append('\\');
outBuffer.append('u');
outBuffer.append(toHex((aChar >> 12) & 0xF));
outBuffer.append(toHex((aChar >> 8) & 0xF));
outBuffer.append(toHex((aChar >> 4) & 0xF));
outBuffer.append(toHex( aChar & 0xF));
} else {
if (specialSaveChars.indexOf(aChar) != -1)
outBuffer.append('\\');
outBuffer.append(aChar);
}
大家的回复,我在试验,等完了之后,就散分。
谢谢啦,缘分啊!
String username = new String("我是中国人".getBytes("ISO8859_1"), "GBK")
中文保存成\u****其实就是其Unicode,java默认就是Unicode编码的
正如上面 vtable9999(肝肝肝肝) 所说,properties类里面的saveConvert会先判断这个字符是否是中文,如果是就会转换成\u****的标准unicode形式.其实这样的形式对于我们使用中文是没有影响的,你读取出来打印一样会是正确的中文显示
如果需要看到这个文件的中文显示,你可以使用native2ascii转换过来
不过我个人认为这个是没有必要的.