java使用的有unicode默认字符编码集(刚搜了下,好像是系统默认的字符编码Charset.defaultCharset()),所以直接new String("测试".getBytes(),charset)是没有意义的。
在读取外部数据的时候,才是使用字符编码集的意义。
InputStream is;
byte[] b = new byte[is.available()];
is.read(b);
String s = new String(b,charset);
如果外部文件不是默认的字符编码集,加上字符编码集就可以读到正确的文件了。
如读取一个txt文件的内容
BufferedReader fReader = new BufferedReader(new FileReader(fileName));
fReader.readLine();
如果字符编码不对读取到的可能就是乱码
new String(fReader.readLine().getBytes(),charset)
这样就不是乱码了
或者可以使用如下这种方式
BufferedReader fReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),charset));
fReader.readLine();
这样就能读取到非乱码的字符了
同理输出的时候,如果客户端的默认编码集不一直,输出的时候也要加上设置的字符编码
写到后面好像发现和标题相关不大啊,意思一样的。。。
时间: 2024-10-13 17:19:37