`

JAVA是如何处理字符的

阅读更多
    JAVA中的String类是解决字符问题的最好工具。在JAVA里,一个基本的要点是:String类对象是不需要指定编码表的!为什么它会自己知道一堆数字各代表什么字符呢?就是因为String里的字符信息是用UNICODE编码存放的。而JAVA为了表示字符(注意是单个字符),也有char这个数据类型,而且他的大小是固定2个8位16进制数字长度,也就是0~65535。为的就是对应UNICODE里面的一個字符。
    大家如果想取一个String里的按UNICODE数字,可以用getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 方法取得一个char[],这个char[]里就是表示String字符的,按UNICODE编码表编码的数字。     
    可惜现在绝大多数的系统和程序都不是按UNICODE来处理字符,而JAVA程序总是要和别的程序和系统交换数据的,所以在接收一个字符,或者是发送一个字符的时候,就必须要留意当前系统和UNICODE的关系了。比如你从网络或者文件接受到一数字:0xB5,0xB1,JAVA程序并不知道这两个字到底是中文呢?还是日文,或者英文。你如果不指明这个两个数字的编码表,JAVA就会按当前系统默认的编码表来处理。如果这两个数字是从中文WIN98发出去的,JAVA程序又是在英文LINUX上运行的,那就出现了所谓的乱码问题了。也就是JAVA按英文的编码表ASCII来处理这两个数字
    当通过new String({0xB5,0xB1})得到的String的时候,这个String代表的已经不是中文的“当”字,而是两个英文的奇怪字符了。不过如果你知道这两个数字一定是中文的话,就可以指定用new String({0xB5,0xB1},"GB2312")来处理,这时候新建立的String才真的是一个“当”字。当然如果你要把一个“当”字的JAVA的String显示在中文WIN98上,必须把这个字输出成两个8位数字:0xB5,0xB1,不管是写成文件还是输出到浏览器上,都必须是0xB5,0xB1。如何把“当”字用GB2312输出?   
    String.getBytes("GB2312")就可以了!所以有一点要记住:和外界交换任何信息都是以byte[]来进行的!。你可以留意一下JAVA大多数的I/O类,都有以byte[]作为参数和返回值的方法。不过,也有很多写的比较糊涂的程序,没有提供byte[]交换信息的方法,害的不同文字平台的程序员很头疼。Servlet的HttpRequest.getParameter()就是这样。好在有的JSP/SERVLET容易还提供先指定编码表的方法,才能比较简单的解决这个问题
分享到:
评论

相关推荐

    JAVA中处理字符串的类

    在Java编程语言中,处理字符串是一项常见的任务。Java提供了多种内置类来支持字符串操作,但有时这些类可能不能完全满足开发者的特定需求。在这种情况下,开发者可能会选择自定义工具类来封装常用的功能,以提高代码...

    Java中的字符串相关处理

    ### Java中的字符串相关处理 #### 引言 在Java编程语言中,字符串处理是一个核心且广泛使用的领域。不同于其他编程语言将字符串视为字符数组,Java将字符串视为`String`类型对象,这一设计使得字符串处理更加高效...

    java处理字符和字符串课件

    ### Java处理字符和字符串知识点详解 #### 一、概述 在Java编程中,字符和字符串是最常见的数据类型之一。为了方便高效地处理这些数据类型,Java提供了强大的支持,包括`Character`类和`String`类等。这些类位于`...

    java 字符串处理

    java 常用字符串处理工具类! java 常用字符串处理工具类!

    java解析xml字符串

    在IT领域,特别是Java开发中,处理XML数据是一项常见的任务。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,它具有良好的结构化特性,使得数据在不同系统之间交换变得容易。Java提供了多种库来解析和...

    JAVA中汉字字符转化为英文字符

    ### JAVA中汉字字符转化为英文字符 #### 知识点概览 本文将详细介绍如何在Java中实现汉字到英文字符的转换。此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr`...

    java 去掉重复字符 三个方法

    在Java编程中,有时我们需要处理字符串,特别是去除其中的重复字符。这可能在处理用户输入、数据清洗或创建唯一标识时变得尤为重要。本教程将详细讲解三种不同的方法来实现这个功能,适合Java初学者作为学习参考资料...

    java字符串处理取出括号内的字符串

    在Java编程语言中,字符串...总的来说,无论是通过正则表达式还是通过栈,Java都提供了灵活且高效的方法来处理字符串,包括提取括号内的内容。理解并熟练运用这些工具,能帮助开发者更有效地处理各种字符串相关的任务。

    Java分割字符串

    在Java编程语言中,分割字符串是一项常见的操作,它允许我们将一个长字符串分解成多个子字符串,每个子字符串对应原字符串中的某个部分。这通常通过使用`split()`方法来实现,该方法是Java `String`类的一个成员。在...

    java中的字符串处理

    ### Java中的字符串处理 #### 一、字符串的概念与特点 在Java中,字符串是一系列字符的集合,与其他编程语言将字符串视为字符数组不同,Java采用了更为先进的方式——将字符串视为`String`类型对象来处理。这种...

    JAVA日期与字符串的转换

    ### JAVA日期与字符串的转换 在Java编程中,经常需要将日期对象转化为字符串形式以便于存储或显示,或者反过来将字符串转化成日期对象来进行日期计算等操作。本文将详细介绍如何在Java中实现这两种转换。 #### 一...

    java字符串处理输入一个字符串和一个字符后,原字符串中所有该字符将被删除并显示出结果

    6. **处理字符串**:在处理方法中,获取两个文本字段的值,使用`String`类的`replace()` 或 `replaceAll()` 方法删除指定字符,然后更新结果。 7. **显示结果**:在Applet的某个地方(如`JLabel`)显示处理后的字符...

    java 提取单个字符

    在Java编程语言中,提取单个字符是一项基本操作,尤其在处理字符串时。字符串是由多个字符组成的序列,而有时我们可能需要对其中的某个特定字符进行单独操作。本篇文章将详细探讨如何在Java中提取单个字符。 首先,...

    Java中文字符处理.docx

    Java中的 `Character` 类提供了许多处理字符的方法。下面介绍两种利用 `Character` 类来判断汉字的方法: 1. **使用 `UnicodeBlock` 判断汉字:** ```java private static boolean isChineseByBlock(char c) { ...

    Java检索字符串中是否存在某字符

    在Java编程语言中,字符串处理是一项基础且重要的任务。标题提到的"Java检索字符串中是否存在某字符",实际上涉及到字符串的查找...通过学习和理解这些算法,开发者能够更好地处理字符串相关的复杂问题,提高程序性能。

    java 寻找指定字符第一次出现的位置

    首先,Java中的`String`类提供了多种方法来处理字符串,其中`indexOf()`方法就是用来查找指定字符或子字符串在原始字符串中首次出现的位置。该方法返回的是一个整数值,表示目标字符或子字符串在原字符串中第一次...

    java 字符串中文判断

    在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...

    java 给指定字符赋值

    在Java中,StringBuffer类经常用于处理字符串。`StringBufferDemo_03.java`可能包含有关如何在字符串和字符之间转换的示例代码。例如,将一个字符添加到StringBuffer: ```java StringBuffer sb = new ...

    Java字符流与字节流区别

    Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 ...而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换。字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。

    java 去除重复字符

    在Java编程语言中,去除字符串中的重复字符是一个常见的任务,特别是在处理用户输入或者进行文本处理时。本主题将深入探讨如何使用不同的方法来实现这一功能,以满足各种场景的需求。 首先,我们可以使用Java的`...

Global site tag (gtag.js) - Google Analytics