`
yes1983
  • 浏览: 38570 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java编码问题的简单总结

阅读更多
1.java中存储字符串都是用unicode(utf-16le).
2.unicode只是一种编码方式,简单地说,unicode只是规定了从数字到对应的字符的一个映射,但怎么表示这个数字,就有多种方法了.比如,“汉字”对应的数字是0x6c49和0x5b57,而编码的程序数据是:
BYTE data_utf8[] = {0xE6, 0xB1, 0x89, 0xE5, 0xAD, 0x97}; // UTF-8编码
WORD data_utf16[] = {0x6c49, 0x5b57}; // UTF-16编码
DWORD data_utf32[] = {0x6c49, 0x5b57}; // UTF-32编码
  这里用BYTE、WORD、DWORD分别表示无符号8位整数,无符号16位整数和无符号32位整数。UTF-8、UTF-16、UTF-32分别以BYTE、WORD、DWORD作为编码单位。“汉字”的UTF-8编码需要6个字节。“汉字”的UTF-16编码需要两个WORD,大小是4个字节。“汉字”的UTF-32编码需要两个DWORD,大小是8个字节。根据字节序的不同,UTF-16可以被实现为UTF-16LE或UTF-16BE,UTF-32可以被实现为UTF-32LE或UTF-32BE。再展开就可以写一篇论文了.对于程序员来说,只要知道有这几种unicode的不同实现就可以了.注意,utf8根据字符的不同,并不一定都需要3个字节来存一个字符.比如utf8跟ascii就是完全兼容的,说明它表示ascii字符只要一个字节就可以了.UTF-16长度相对固定,只要不处理大于\U200000范围的字符,每个Unicode代码点使用16位即2字节表示,超出部分使用两个UTF-16即4字节表示.UTF-32长度始终固定,每个Unicode代码点使用32位即4字节表示。
3.读取一个字符串并输出的流程至少分三步:
   1.从数据来源(比如一个文件)处读取二进制数据流并根据制定的编码转成字符
   2.这些转好的字符会被存在jvm中(用utf16编码存这些字符).
   3.等到要输出的时候,上一步的字符会根据你指定的编码转成二进制流存到一个文件中.
    String可以看作明文,byte[] 可以看作加密后的密文。

     编码就相当于加密策略。

     byte[] -> String 就相当于解密。
     String -> byte[] 就相当于加密。

     加密解密都需要事先知道加密策略(就是编码)。
   如果一个文件是utf8的,但你用gbk去读取,那肯定会变成没有意义和规律的乱码字符,这时候乱码字符存在jvm中.唯一的补救措施就是你把这些乱码指定gbk输出成二进制流(此时跟你直接读取原来文件的二进制流是相等的),再用utf8读取这个流,获得的就是正确的字符.
4.java默认的编码不是utf16,那是内部存储字符串的方式.java的默认编码是跟你的操作系统的默认编码是一样的.比如中文系统就是GBK.可以用Charset.defaultCharset()来获得java默认的编码是什么.
分享到:
评论

相关推荐

    Java乱码问题解决

    在Java开发过程中,尤其是在处理中文字符时,经常遇到字符编码不一致导致的乱码问题。由于Java默认使用Unicode编码,而在中国大陆地区,常见的字符集为GB2312(GB18030)或GBK,在台湾地区则多使用Big5编码。这些...

    Java乱码问题

    3. **对于已存在的Java文件**,如果之前保存时使用的是GBK编码格式,并且在编译时出现了乱码问题,可以通过转换文件的编码格式来解决。 - 将文件另存为ANSI格式。尽管这种方法看起来简单粗暴,但它实际上是一种有效...

    Java 中文乱码问题

    总结一下,Java中文乱码问题的解决主要依赖于以下几个关键点:正确设置源代码的编码、指定JVM的字符编码、理解并正确处理文件和网络通信的字符编码。通过细心的检查和配置,大部分乱码问题都能得到解决。同时,了解...

    Java开发Client客户端,连接Windows的Telnet服务器,解决了中文乱码问题

    总结一下,解决Java Telnet客户端中文乱码问题的关键在于: 1. 使用`Charset`类进行编码转换,确保与服务器的编码保持一致。 2. 在发送和接收数据时,正确地设置输入流和输出流的字符编码。 通过以上步骤,我们...

    Java中编码总结.pdf

    由于提供的文件内容包含了技术性质的详细说明,所以本段落将根据提供的文档内容概述Java中的编码知识,同时纠正识别错误并补充遗漏,确保知识的连贯性和准确性。 首先,文档中提到了Java中与字符编码相关的基本概念...

    JAVA编程规则总结

    ### JAVA编程规则总结 #### 一、编程原则 1. **不要自我重复** 这是最基本的编程原则之一,意味着避免重复的代码。在Java编程中,可以通过多种方式来减少代码重复,如使用循环语句、函数、类等。一旦发现代码中...

    java 中文乱码 处理

    在Java开发过程中,中文乱码问题常常令人头疼,尤其是在Web应用中,客户端提交的数据经常会出现编码不一致导致的乱码问题。本文将介绍几种解决Java中中文乱码的方法,希望能对您有所帮助。 #### 方法一:转换请求...

    java传值中的乱码

    本文将深入探讨Java传值中的乱码问题,并提供一种简单有效的解决方案。 #### 一、乱码产生的原因 在讨论如何解决乱码之前,我们需要先了解乱码产生的根本原因。通常来说,乱码主要是由于字符编码不一致造成的。当...

    java配置过滤器,解决乱码

    总结来说,Java配置过滤器解决乱码问题的核心在于确保请求和响应的编码与预期一致。通过设置请求的字符编码和响应的Content-Type,可以有效地防止乱码的产生,提升用户体验。在实际开发中,理解字符编码的工作原理,...

    java里中文乱码的解决篇之过滤器

    总结一下,Java Web中的中文乱码问题主要通过设置正确的字符编码来解决,而过滤器是处理这个问题的一种有效手段。通过创建并配置过滤器,我们可以确保请求和响应的编码一致,从而避免中文乱码的出现。同时,注意整个...

    北大青鸟 accp 5.0 S1 JAVA总结 PPT

    ### Java编码规范 遵循良好的编码规范有助于提高代码质量。北大青鸟ACCP 5.0建议: 1. 类名必须使用`public`修饰。 2. 每行只写一条语句。 3. 使用花括号`{}`时,"{"应在结构开始处,"}"与结构的第一个字母对齐,...

    java编码注释和doc自动生成

    本文将详细介绍如何在Java编码中创建注释以及如何使用apidoc工具自动生成文档。 首先,Java提供了多种注释类型,包括单行注释、多行注释和Javadoc注释。单行注释以`//`开始,适用于快速添加临时或简单的说明。多行...

    java基础知识总结(经典).pdf

    假设要开发一个简单的Java程序来计算两个整数的和: 1. **需求分析**:需要用户输入两个整数,然后显示它们的和。 2. **设计思路**:使用Scanner类读取用户输入,计算并打印结果。 3. **编码实现**:定义一个名为`...

    一些简单的JAvA程序

    - **Unicode编码**: Java使用Unicode编码,可以通过整型表示特定的字符。 ### 知识点五:Java中的数组和数据类型转换 #### 示例代码分析 ```java public class Example2_2 { public static void main(String[] ...

    Java编写的简单的MP3播放器代码

    Java编写的简单MP3播放器代码是一个典型的Java应用程序,它实现了音频播放功能,特别是针对MP3格式的音乐文件。在本文中,我们将深入探讨这个项目的各个方面,包括Java编程语言的基础,MP3音频处理,以及XML数据处理...

    Java企业级开发综合技能知识总结

    ### Java企业级开发综合技能知识总结 #### Java面向对象 1. **super()与this()的区别?** - `super()`用于调用父类构造器,必须作为子类构造器的第一条语句出现。 - `this()`用于调用本类的其他构造器,也必须...

    java的SSH框架总结.pdf

    总结来说,SSH框架结合了Struts的MVC模式、Spring的依赖注入和全面的后端解决方案,以及Hibernate的对象关系映射能力,为Java Web开发提供了一个强大、结构清晰的框架。这种框架模式有助于提高开发效率,降低维护...

    Java判断文件的编码

    以上介绍的是一个较为简单的文件编码检测方法,它主要针对UTF-8和GBK两种编码进行了检测。在实际应用中,还需要考虑到其他可能的编码格式以及更复杂的文件结构。此外,这种方法可能无法准确地处理所有情况,特别是在...

    Java读写xml,word,xml文件(防乱码)

    ### Java读写XML、Word与TXT文件:去除乱码问题详解 #### 一、引言 在实际开发过程中,我们经常需要处理各种类型的文件,包括XML、Word文档以及普通的文本文件(如TXT)。这些文件在读写过程中经常会遇到乱码问题,...

Global site tag (gtag.js) - Google Analytics