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();

这样就能读取到非乱码的字符了


同理输出的时候,如果客户端的默认编码集不一直,输出的时候也要加上设置的字符编码


写到后面好像发现和标题相关不大啊,意思一样的。。。