您的位置:首页 > 编程语言 > Java开发

Java中文乱码问题研究(一)

2013-07-20 21:38 183 查看
最近感觉自己对编码的理解还不够透彻,趁bug改完休息1,2天,研究一下编码的问题,我觉得这个是值得研究的地方。

自己开始研究的时候,很细心的看了不少的资料,这里和大家分享一下,希望对大家有用,原理有些我就不一条一条的来了,重点描述下吧。

(一)控制台中的编码问题

1. 分析:对于控制台中的中文乱码问题,这里总结了点:

a. 查看操作系统(OS)的默认编码(这点还是有必要的,但是大多数在中国用的都是默认GBK)

[java] view plain copy print ? 

Properties props = System.getProperties();
//操作系统信息
System.out.println("操作系统默认编码: " + props.getProperty("file.encoding"));


b. 确定了默认的情况后,在java文件编译成class文件到内存年的时候,使用GBK编码编译【-encoding】,IDE可以使用默认

(中途的UNICODE编码可以查阅相关资料)

c. 输出的时候也设置成GBK就成了

测试代码如下:

view
source

print?

01
package
 
com.test.two;
02
 
03
import
 
java.io.BufferedReader;
04
 
import
 
java.io.BufferedWriter;
05
 
import
 
java.io.IOException;
06
 
import
 
java.io.InputStreamReader;
07
 
import
 
java.io.OutputStreamWriter;
08
 
09
/**
10
  
*
JAVA编码测试
11
  
*
@author Architecture
12
  
*/
13
 
public
 
class
 
Test
{
14
  
 
15
  
public
 
static
 
void
 
main(String[]
args) 
throws
 
IOException
{
16
   
//接收输入串的变量
17
   
String
str_in = 
""
;
18
   
 
19
   
 
20
   
//定义流:设置输入接口按照中文的编码
21
   
BufferedReader
std_in = 
new
 
BufferedReader(
22
     
new
 
InputStreamReader(System.in, 
"GBK"
));
23
   
//定义流:设置输出接口按照中文的编码
24
   
BufferedWriter
std_out = 
new
 
BufferedWriter(
25
     
new
 
OutputStreamWriter(System.out, 
"GBK"
));
26
   
 
27
   
//从控制台输出程序中的内容
28
   
std_out.write(
"请输入:"
);
29
   
std_out.flush();
30
 
31
  
//从控制台输入到程序
32
   
str_in
= std_in.readLine();
33
   
 
34
   
//从程序输出到控制台
35
   
std_out.write(
"这是输入的字符串:\n"
 
+
str_in);
36
   
std_out.flush();
37
  
}
38
 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: