使用System.out.println("\u6C49");可以输出一个汉字但是现在这个\u6C49是存放在一个文件中的
我通过读取文件,把他放到一个字符串中
再次System.out.println(str)的时候,出来的是\u6C49这个没有转换的字符串我想知道,怎么处理才能输出汉字!
我通过读取文件,把他放到一个字符串中
再次System.out.println(str)的时候,出来的是\u6C49这个没有转换的字符串我想知道,怎么处理才能输出汉字!
FileOutputStream fos = new FileOutputStream(new File("D:/1.txt"));
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("\u6C49");
bw.write("\u6C49");
bw.write("\u6C49");
bw.close(); FileInputStream fis = new FileInputStream(new File("D:/1.txt"));
InputStreamReader osi = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(osi);
String str = null;
while ((str = br.readLine()) != null)
{
System.out.println(str);
}
}
string str = "\u6C49";
System.out.println(str);
这样也应该可以。如果可以,那按道理你的从文件中取数据方法是对的啊!
代码如下:import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;public class Test {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream(new File("D:/1.txt"));
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("\u6C49");
bw.close(); FileInputStream fis = new FileInputStream(new File("D:/1.txt"));
InputStreamReader osi = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(osi);
String str = null;
while ((str = br.readLine()) != null)
{
System.out.println(str);
}
}
}
输出结果:汉
连文件中的\u6C49也变成了 汉 。OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
中的"UTF-8"是文件的编码类型,这里是根据文件编码填写。
public class unicodeTest{
private static String loadConvert (char[] in, int off, int len, char[] convtBuf) {
if (convtBuf.length < len) {
int newLen = len * 2;
if (newLen < 0) {
newLen = Integer.MAX_VALUE;
}
convtBuf = new char[newLen];
}
char aChar;
char[] out = convtBuf;
int outLen = 0;
int end = off + len; while (off < end) {
aChar = in[off++];
if (aChar == '\\') {
aChar = in[off++];
if(aChar == 'u') {
// Read the xxxx
int value=0;
for (int i=0; i<4; i++) {
aChar = in[off++];
switch (aChar) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
value = (value << 4) + aChar - '0';
break;
case 'a': case 'b': case 'c':
case 'd': case 'e': case 'f':
value = (value << 4) + 10 + aChar - 'a';
break;
case 'A': case 'B': case 'C':
case 'D': case 'E': case 'F':
value = (value << 4) + 10 + aChar - 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");
}
}
out[outLen++] = (char)value;
} else {
if (aChar == 't') aChar = '\t';
else if (aChar == 'r') aChar = '\r';
else if (aChar == 'n') aChar = '\n';
else if (aChar == 'f') aChar = '\f';
out[outLen++] = aChar;
}
} else {
out[outLen++] = (char)aChar;
}
}
return new String (out, 0, outLen);
}
public static void main(String rags[])throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("1.txt")));
//1.txt里面的内容是\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd
//代表的中文是:中华人民共和国
String line="";
while((line=br.readLine())!=null){
char[] convtBuf=new char[7];
System.out.println(loadConvert(line.toCharArray(),0,42,convtBuf));
}
br.close();
}
}