我从properties文件中取出的字符串,通过分割的到结果如下,“\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838”
,然后用System.out.print打印出来,是原样输出。而我直接用
new String ("\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838")手动写死的,然后打印出来的直接是中文。不知道是何原因
,然后用System.out.print打印出来,是原样输出。而我直接用
new String ("\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838")手动写死的,然后打印出来的直接是中文。不知道是何原因
System.out.print(new String(your properties))
那为何我从新new String(分割的结果) 还是原样输出呢。有什么解决办法呢?
路径要用\转义\对吧。如果你的路径是写在文件里
文件里这样写d:\123.txt
代码是不是直接File file = new File(从文件读出的path);
是不是就可以了。
同样的
你在properties里读出的
\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838
读出来后\被转义了,实际上在代码里成了\\u9001\\u76d1\\u5bdf\\u5904\\u9886\\u5bfc\\u5ba1
所以原样打出了。
你直接写死的\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838当然认为是unicode编码的会转换为汉字输出了。
System.out.println(str);输出为:送监察处领导审核
我的控制台使用了UTF-8编码。
哦,不好意思没看清前面:),你直接用
String str = new String("读出来的properties里面的值".getBytes(),"UTF-8");
试试吧
你手输的\u告诉java,后面是一个编码。也就是说,\u被理解成一个转义字符。
而从文件读的话,\u被理解成\\u(注意,是两个字符\+u)。所以当然是原样的。
找出\u这个转义符的asc码,然后将字符串中的\u(两个字符)替换掉。
// 这里是从属性文件中读出的字符串
String[] str = "\\u9001\\u76d1\\u5bdf\\u5904\\u9886\\u5bfc\\u5ba1\\u6838".split("\\\\u");
int[] arr = new int[str.length];
for(int i = 1; i< str.length;i++){
arr[i] = Integer.parseInt(str[i], 16);
}
System.out.println(new String(arr, 1, arr.length - 1));
}
你自己读的时候,readLine()出来,java给你的实际上是"\\u9001\\u76d1\\u5bdf\\u5904\\u9886\\u5bfc\\u5ba1\\u6838",当然会原样输出了
你自己测试print的时候,是写死的unicode,当然会自动帮你转成中文了啊如果还是确定要自己readLine(),建议你去看看Properties的load方法,看一下它怎么处理的,然后你把分割之后的字符串再按同样的方式处理一下就行了
String tempValue = new JSONTokener("'" + split2[1] + "'").nextValue().toString();
即使转义后还是能够直接输出中文。忒强大了。
参考处:http://blog.chenlb.com/2009/07/java-unicode-to-chinese.html
要不然还不如你自己写个转换方法。