编译阶段:首先编写java源文件,并以一定编码保存,调用java编译器编译源文件,Javac命令行参数-encoding告诉java编译器java源文件使用的编码(如果没有指定则java编译器认为java文件使用操作系统中file.encoding指定的编码),java编译器会首先把源文件从-encoding编码转换到unicode编码(初步认为是utf8编码)存储到内存中,最后写入class文件(class文件是utf8编码)。
执行阶段:
jvm首先把class文件读入内存(把utf8编码的class文件直接读入内存,不进行转码),然后把输出字符串转换成-Dfile.encoding指定的编码或者指定输入字符串的编码格式。
java的class文件是以utf8存储的,这点可以使用UE软件查看16进制编码和utf8编码得知。
总之,java中以unicode字符编号为桥梁,进行各种编码转换,转换都是针对unicode字符编号(每一个字符都有唯一的unicode编号,范围U+0000 ~ U+10FFFF为有效字符编号)
int codePoint = Character.toCodePoint(char high, char low)//转换一个utf-16编码的字符到unicode编码
char[] chars = Character.toChars(int codePoint)//转换一个unicode编码到一个或者两个utf-16编码字符
#### jsp编码总结
jsp会在第一次被访问的时候由jsp容器对jsp进行一次转码存储到内存中(pageEncoding指定的编码-->contentType中的charset指定编码-->默认ISO-8859-1编码依次尝试转成unicode编码存储到内存中)--------> 接着把内存中的数据保存到.java文件中(.java文件的编码由web.xml中的javaEncoding参数控制,tomcat默认是utf8无bom编码)----> tomcat容器会调用java编译器会按照javaEncoding编码把.java文件读取到内存中转换为unicode编码然后编译保存成utf-8编码的.class文件,最后jvm加载.class文件,运行字节码,输出结果编码格式由(contentType中charset ---> pageEncoding ---> ISO-8859-1 依次尝试确定)
### servlet编码总结
servlet输入编码由request.setCharacterEncoding()确定(默认为iso-8859-1),输出编码由response.setCharacterEncoding()确定(默认为ISO-8859-1)
#### gcc(gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)) 编码 ##############
在ubuntu 2.6.38-8-generic下测试有如下结果:
1:支持gbk,ascii,utf8的源文件编译,不支持utf16和utf32编码
2:gcc会保证.o和.out文件的编码与源文件一致,在没有指定finput-charset参数的时候,会猜测源文件编码进行编译。
############ shell 编码问题
shell脚本不能以utf8-bom格式(要以utf8无bom格式保存),否则执行时候会报错(行 1: $'\357\273\277#!': 未找到命令)
shell脚本使用gbk编码后(ex: run.sh)
#! /bin/bash
cat Test.java | grep '中国'
只有run.sh和Test.java都使用utf8无bom格式编码了才能正常的匹配出来
cat run.sh > txt (txt文件的格式和run.sh的格式保持一致)
分享到:
相关推荐
除了Java基础之外,还有一小部分web方面的知识,如:JSP、EL表达式、JSTL、过滤器与监听器之类的知识,但是只有一小部分
5. **学习杂记**:学习加密算法不仅需要理解算法原理,还要熟悉Java提供的加密API。实践是提升技能的关键,通过编写示例代码,理解如何创建密钥、初始化Cipher对象、处理加密和解密过程。同时,了解加密过程中的常见...
oracle杂记.doc 这是我个人的总结。 主要是oracle的编程以及体系结构的理解。
- **jre**:Java 运行时环境,包含了运行 Java 程序所需的库和虚拟机。 - **src.zip**:源代码归档文件,通常包含了一个项目的全部源代码。 以上是对给定文件中提到的基础知识点的详细解释,涵盖了计算机编程领域的...
第14章 Pythonic与Python杂记.mp4
本篇将深入探讨Java多线程的相关知识,结合《java随笔杂记.doc》文档中的内容,我们将覆盖以下几个方面: 1. **线程的创建方式** - 实现`Runnable`接口:创建一个实现了`Runnable`接口的类,然后将其实例传递给`...
《Oracle 9i杂记——探索PLSQL的世界》 Oracle 9i,作为Oracle数据库的一个重要版本,引入了许多新特性和改进,其中PL/SQL(Procedural Language/Structured Query Language)是其核心组成部分,是一种结合了SQL和...
李特伍德的《一个数学家的杂记》是一本收录了作者关于数学、教育以及个人观点文章的集合。这本杂记以数学为主题,涉及的内容包括几何、概率论、数论以及历史上的数学发现等。李特伍德在书中讨论了数学知识与日常生活...
然而,Eclipse需要Java运行环境支持,因此你需要先安装JRE(Java Runtime Environment)和JDK(Java Development Kit)。JRE提供运行Java程序所需的环境,JDK则包含开发工具。下载并安装jre-6u23-windows-i586.exe和...
installshield安装制作杂记 installshield x
【数据库设计基础与PowerDesigner应用】 数据库设计是IT领域中至关重要的部分,它涉及概念设计、逻辑设计和物理设计等多个阶段。在概念设计阶段,我们主要关注实体、属性和联系集,这些都是构建数据库模型的基础...
杂记中所讲述的内容和描绘的场景,实际上蕴含了丰富的中国农村生活细节和风土人情,以及人性的细腻观察。以下是对这些内容的知识点解读: 首先,杂记中提到了家庭中烹饪的场景,特别强调了“蒸菜疙瘩”的制作过程。...
14.6_None|Pythonic与Python杂记|Python3.8入门_&_进阶_&_原生爬虫实战完全解读
反爬杂记日常记录十一字
爬虫杂记日常记录十一字
个人笔记美食杂记生活等
狱中杂记教学设计.pdf
互联网杂记(六).docx