科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道专家讲述J2EE中的多字节字符的处理 (4)

专家讲述J2EE中的多字节字符的处理 (4)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

专家讲述J2EE中的多字节字符的处理 (4)

作者:observer 来源:Matrix 2007年11月18日

关键字: 字符 多字节 J2EE

  • 评论
  • 分享微博
  • 分享邮件
 

编译阶段

如果设置正确,在编辑的时候就能在源文件中存储多字节的文字字符串,但这些源文件不能直接执行。如果编写的是servlet代码,这些Java文件在部署到应用服务器之前必须先被编译成类文件。

对于JSP文件,应用服务器在执行前会自动将其编译成类文件。在编译阶段,字符编码问题仍有可能存在。为了运行下面这个简单示例,请下载本文的源代码。

程序清单1 EncodingTest.java

1  import java.io.ByteArrayOutputStream;
2  import java.io.OutputStreamWriter;
3
4  public class EncodingTest {  
5  public static void main(String[] args) {
6  OutputStreamWriter out = 
new OutputStreamWriter
(new ByteArrayOutputStream());
7  System.out.println("Current Encoding: 
"+out.getEncoding());
8  System.out.println("Literal output:  
ÄãºÃ£¡");
// You may not see this Chinese String
9  }
10 }

有关这段源代码的说明如下:

·

我们用下面的代码确定系统当前的编码方式:

6 OutputStreamWriter out =

new OutputStreamWriter

(new ByteArrayOutputStream());

7 System.out.println("Current Encoding:

"+out.getEncoding());

·第8行包含直接打印输出中文文字字符串(由于操作系统语言设置的原因可能造成该字符串不能正常显示)的代码。

·用GBK编码方式保存这个Java源文件。

执行结果如图4所示。

图4 示例程序的输出

从图4的执行结果中我们可以归纳出:

· Java编译器(javac)将系统的语言环境作为默认的编码设置,Java运行时(Java Runtime Environment.)也如此。

· 只有第一次的运行结果是正确的,其它的字符串显示都有问题。

· 仅当运行时的编码设置与源文件保存时的编码方式相一致时才能正确显示多字节文字字符串(否则就必须进行转码,参见“运行时阶段”部分)。

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章