- 浏览: 161444 次
- 来自: ...
文章分类
- 全部博客 (110)
- 网络 (3)
- window (1)
- eclipse (2)
- mysql (3)
- java (43)
- spring (2)
- memcahe (4)
- kestrel (1)
- linux (19)
- maven (1)
- 总结 (1)
- ActiveMQ (1)
- 线程 (6)
- nio (7)
- java pool (1)
- IO (1)
- 架构 (1)
- Hadoop (1)
- Storm (1)
- zookeeper (3)
- 工作进程 (1)
- epoll (3)
- nginx (4)
- uml (1)
- 分布式 (1)
- RMI (4)
- redis (1)
- shell (4)
- 黄金文档 (1)
- office (2)
- linux_setup (1)
- visio (1)
- BIOS (1)
- 回调 (1)
- jvm (1)
- resin (1)
- ssd (0)
- xmpp (1)
最新评论
-
qxjandyc:
hjjjjjjjjjjjjjjjjjjjjjj
(emoji表情) unicode5与unicode6互换 -
一个人旅行:
写的不错哦
(emoji表情) unicode5与unicode6互换
1、InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符
InputStreamReader(InputStream in, String charsetName)
2、OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
OutputStreamWriter(OutputStream out, String charsetName)
3、String(byte[] bytes, Charset charset)
通过使用指定的 charset解码指定的 byte数组,构造一个新的 String。
4、byte[] getBytes(Charset charset)
把JVM内存中unicode形式的String按encoding制定的编码,转成字节流
使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
5、URLEncoder。encode(String s, String enc)
使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。
对 String 编码时,使用以下规则:
字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。
特殊字符 "."、"-"、"*" 和 "_" 保持不变。
空格字符 " " 转换为一个加号 "+"。
所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 "%xy" 表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。
例如,使用 UTF-8 编码机制,字符串 "The string ü@foo-bar" 将转换为 "The+string+%C3%BC%40foo-bar",因为在 UTF-8 中,字符 ü 编码为两个字节,C3 (十六进制)和 BC (十六进制),字符 @ 编码为一个字节 40 (十六进制)。
6、URLDecoder.decode(String s, String enc)
使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。
转换中使用以下规则:
字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。
特殊字符 "."、"-"、"*" 和 "_" 保持不变。
加号 "+" 转换为空格字符 " "。
将把 "%xy" 格式序列视为一个字节,其中 xy 为 8 位的两位十六进制表示形式。然后,所有连续包含一个或多个这些字节序列的子字符串,将被其编码可生成这些连续字节的字符所代替。可以指定对这些字符进行解码的编码机制,或者如果未指定的话,则使用平台的默认编码机制。
该解码器处理非法字符串有两种可能的方法。一种方法是不管该非法字符,另一种方法是抛出 IllegalArgumentException 异常。解码器具体采用哪种方法取决于实现。
案例:
1.JVM内部的String,Char都是用unicode存储(没有任何编码),比如:
"分"的unicode=20998(十进制)String=[20998],String中有1个char
"分享"的unicode=20998,20139 (十进制)String=[20998,20139],String中有2个char
无论系统编码是什么,"分"这个字在JVM中都是20998
2.String.getBytes("encoding")的意思:
把JVM内存中unicode形式的String按encoding制定的编码,转成字节流,比如汉字"分":
String="分"
String.getBytes("utf-8")//把String转成utf-8字节流,汉字"分"为3个字节[0xe5,0x88,0x86]
String.getBytes("gbk")//把String转成gbk字节流,汉字"分"为2个字节[0xb7,0xd6]
String.getBytes()//按JVM默认编码转成字节流。linux,如果LANG=en_US,就是iso8859-1,如果是windows eclipse就是UTF-8
3.String std=new String(byte b[],"encoding")的意思
把是encoding编码的字节流b,转换成String,比如:
b=[0xe5,0x88,0x86]
String std=new String(byte b[],"utf-8")//把utf-8的字节数组b,转成string。b中是3个字节的utf8编码。执行后string=[20998]
b=[0xb7,0xd6]
String std=new String(byte b[],"gbk")//把gbk的字节数组b,转成string。b中是2个字节的gbk编码。执行后string=[20998]
4.在linux,LANG=en_US的环境下打印utf8的汉字:
因为终端(secretCRT)只能认单字节流的utf8,若以直接打印utf8的多字节String就会是“???”
需要把utf8的string转换成单字节流编码的iso8859-1,secretCRT才能按utf8显示成汉字,比如:
s1="分"//s1中有一个char=[20998]
String s2=new String(s1.getBytes("utf-8"),"iso8859-1")//获取utf-8编码的s1字节流,并编码成iso8859-1,s2中有三个char,分别是[0xe5,0x88,0x86]
println(s2)//在utf8终端控制台上打印s2
如果终端(secretCRT)的显示编码是default(其实就是iso8859-1能显示GBK),那执行以下代码:
s1="分"//s1中有一个char=[20998]
String s2=new String(s1.getBytes("gbk"),"iso8859-1")//获取gbk编码的s1字节流,并编码成iso8859-1,s2中有两个char,分别是[0xb7,0xd6]
println(s2)//在gbk终端控制台上打印s2
在windows上,因为eclipse控制台系统默认编码是utf8。所以直接打印就可以了
InputStreamReader(InputStream in, String charsetName)
2、OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
OutputStreamWriter(OutputStream out, String charsetName)
3、String(byte[] bytes, Charset charset)
通过使用指定的 charset解码指定的 byte数组,构造一个新的 String。
4、byte[] getBytes(Charset charset)
把JVM内存中unicode形式的String按encoding制定的编码,转成字节流
使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
5、URLEncoder。encode(String s, String enc)
使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。
对 String 编码时,使用以下规则:
字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。
特殊字符 "."、"-"、"*" 和 "_" 保持不变。
空格字符 " " 转换为一个加号 "+"。
所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 "%xy" 表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。
例如,使用 UTF-8 编码机制,字符串 "The string ü@foo-bar" 将转换为 "The+string+%C3%BC%40foo-bar",因为在 UTF-8 中,字符 ü 编码为两个字节,C3 (十六进制)和 BC (十六进制),字符 @ 编码为一个字节 40 (十六进制)。
6、URLDecoder.decode(String s, String enc)
使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。
转换中使用以下规则:
字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。
特殊字符 "."、"-"、"*" 和 "_" 保持不变。
加号 "+" 转换为空格字符 " "。
将把 "%xy" 格式序列视为一个字节,其中 xy 为 8 位的两位十六进制表示形式。然后,所有连续包含一个或多个这些字节序列的子字符串,将被其编码可生成这些连续字节的字符所代替。可以指定对这些字符进行解码的编码机制,或者如果未指定的话,则使用平台的默认编码机制。
该解码器处理非法字符串有两种可能的方法。一种方法是不管该非法字符,另一种方法是抛出 IllegalArgumentException 异常。解码器具体采用哪种方法取决于实现。
案例:
1.JVM内部的String,Char都是用unicode存储(没有任何编码),比如:
"分"的unicode=20998(十进制)String=[20998],String中有1个char
"分享"的unicode=20998,20139 (十进制)String=[20998,20139],String中有2个char
无论系统编码是什么,"分"这个字在JVM中都是20998
2.String.getBytes("encoding")的意思:
把JVM内存中unicode形式的String按encoding制定的编码,转成字节流,比如汉字"分":
String="分"
String.getBytes("utf-8")//把String转成utf-8字节流,汉字"分"为3个字节[0xe5,0x88,0x86]
String.getBytes("gbk")//把String转成gbk字节流,汉字"分"为2个字节[0xb7,0xd6]
String.getBytes()//按JVM默认编码转成字节流。linux,如果LANG=en_US,就是iso8859-1,如果是windows eclipse就是UTF-8
3.String std=new String(byte b[],"encoding")的意思
把是encoding编码的字节流b,转换成String,比如:
b=[0xe5,0x88,0x86]
String std=new String(byte b[],"utf-8")//把utf-8的字节数组b,转成string。b中是3个字节的utf8编码。执行后string=[20998]
b=[0xb7,0xd6]
String std=new String(byte b[],"gbk")//把gbk的字节数组b,转成string。b中是2个字节的gbk编码。执行后string=[20998]
4.在linux,LANG=en_US的环境下打印utf8的汉字:
因为终端(secretCRT)只能认单字节流的utf8,若以直接打印utf8的多字节String就会是“???”
需要把utf8的string转换成单字节流编码的iso8859-1,secretCRT才能按utf8显示成汉字,比如:
s1="分"//s1中有一个char=[20998]
String s2=new String(s1.getBytes("utf-8"),"iso8859-1")//获取utf-8编码的s1字节流,并编码成iso8859-1,s2中有三个char,分别是[0xe5,0x88,0x86]
println(s2)//在utf8终端控制台上打印s2
如果终端(secretCRT)的显示编码是default(其实就是iso8859-1能显示GBK),那执行以下代码:
s1="分"//s1中有一个char=[20998]
String s2=new String(s1.getBytes("gbk"),"iso8859-1")//获取gbk编码的s1字节流,并编码成iso8859-1,s2中有两个char,分别是[0xb7,0xd6]
println(s2)//在gbk终端控制台上打印s2
在windows上,因为eclipse控制台系统默认编码是utf8。所以直接打印就可以了
发表评论
-
java final关键字
2012-10-21 21:20 1049Java中的final关键字通常的指的是“这是无法改变的”。它 ... -
Java:List中的toArray()的使用方法
2012-10-16 17:15 1064http://webservices.ctocio.com.c ... -
jvm 参数设置 -D
2012-10-16 14:06 9451、log4j 配置文件 -Dlog4j.configurat ... -
Java核心技术(第8版) – 读书笔记
2012-09-03 15:15 788http://www.coder4.com/archives/ ... -
线程123总结
2012-09-02 22:34 772线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一 ... -
Arraylist与linkedlist的区别
2012-08-31 16:44 763List: 有顺序的,元素可以重复 遍历:for 迭代 排 ... -
Java RMI之HelloWorld篇
2012-08-29 11:53 584http://www.cnblogs.com/ninahan0 ... -
Comparator和Comparable在排序中 区别
2012-08-21 09:40 743当需要排序的集合或数组不是单纯的数字类型的时候,通常可以使用C ... -
Spring Bean相关的接口、aware接口、FactoryBean
2012-08-02 14:57 37181、 package spring.beansandcon ... -
关系 UML 说明
2012-08-01 22:56 776关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等 ... -
replace和replaceAll 区别
2012-08-01 14:59 812replace和replaceAll是JAVA中常用的替换字符 ... -
JAVA ANNOTATION详解
2012-08-01 14:56 746http://www.cnblogs.com/phoebus0 ... -
Java中的Enum用法介绍
2012-07-27 09:39 981http://blog.sina.com.cn/s/blog_ ... -
获取本地ip
2012-07-26 09:09 890/** * @Title: getLocalIp ... -
动态代理
2012-07-25 10:29 717http://blog.csdn.net/cz_hyf/art ... -
NIO揭秘-1
2012-07-24 11:15 715http://my.oschina.net/zhangya/b ... -
FileChannel类的简单用法
2012-07-23 20:12 887http://blog.163.com/yf_198407/b ... -
JDK5.0 新特性
2012-07-23 17:30 7521.AutoBoxing 原来int是非Object,在JDK ... -
java jdk5 新特性 Annotation(注释)
2012-07-23 17:29 831http://www.iteye.com/topic/1653 ... -
java jdk5 新特性 可变参数
2012-07-23 17:28 695java jdk5 的新特性:可变参数 Java代码 ...
相关推荐
- **Unicode编码**: Java中的`String`默认使用Unicode编码,这使得`String`对象可以很好地支持国际化和多语言环境。 #### 七、深入探讨 - **Unicode与不同字符集的转换**: Unicode是一种通用的字符编码标准,而...
在Java和JavaScript中,Base64编码和解码是两个重要的功能,用于处理这种编码格式。下面将详细阐述这两个编程语言中实现Base64编码和解码的方法。 首先,让我们关注Java。在Java 8及更高版本中,已经内置了`java....
实现BASE64编码和解码程序, 在类中实现如下函数并运行测试正确。 BASE64编码算法请在网上查询。 public String encode(byte[] data) { } public byte[] decode(String b) { }
在Java编程语言中,处理字符串编码是至关重要的,因为正确的编码和解码可以确保数据的准确性和一致性。本文将深入探讨Java中设置String字符串编码的方法,帮助开发者更好地理解和使用这些功能。 首先,我们需要理解...
在Java中,字符串的编码和解码主要通过`getBytes()`和`new String()`方法来实现。 - **`getBytes()`方法**:该方法用于将字符串转换为字节数组。例如,`str.getBytes("charset")`表示将字符串`str`按照指定的字符集...
在Java中,处理Base64编码和解码的操作通常涉及到网络通信、数据序列化以及安全加密等方面。下面我们将详细探讨Java中的Base64编码和解码原理及其实现方式。 Base64编码的基本思想是将每3个字节(24位)的数据转换...
在IT行业中,编码和解码是数据处理的重要环节,特别是在JavaScript和Java这两种广泛使用的编程语言中。本文将深入探讨“js解码”和“java编码”这两个主题,并结合标签“源码”和“工具”,讨论如何在实际项目中应用...
在Java中,Base64编码和解码的功能主要通过`java.util.Base64`这个类来实现,该类在Java 8及以上版本中引入。下面将详细介绍如何使用这个类进行Base64的编码和解码操作。 首先,我们来看Base64编码的过程。编码的...
在Java编程中,编码和解码是处理字符集和字节序列的关键操作。编码是指将字符转换为字节的过程,而解码则是相反的过程,即从字节恢复到字符。这些操作在处理不同语言、不同系统间的数据传输时尤为重要,因为不同的...
在Java编程语言中,编码和转换是至关重要的概念,特别是在处理字符集和处理不同编码格式的数据时。乱码问题通常是由于编码不一致或不当转换导致的。以下将详细阐述Java中涉及编码转换的关键知识点。 一、概念 1. ...
通过阅读和理解`BCDCode.java`的源码,我们可以学习如何在Java中实现BCD编码和解码,以及在实际项目中如何应用这些技术。这对于提升Java编程技能,特别是处理金融类数据的项目经验,是非常有价值的。
在Java编程语言中,...总之,理解和掌握Java中String与各种进制字符之间的转换对于日常编程至关重要。通过熟练运用上述方法,可以轻松处理与进制相关的任务,无论是处理用户输入、解析文件内容还是与其他系统交互。
通过以上的介绍,我们可以了解到 Java 中字符串和字符编码的处理是非常重要的,特别是在跨平台和多语言环境中。正确的字符编码管理不仅可以避免乱码问题,还能提高程序的健壮性和可维护性。希望本文能帮助开发者们更...
在`CodeConvert.java`源代码中,可能会包含以上提到的编码转换技术的实现,比如通过`InputStreamReader`和`OutputStreamWriter`读写文件,或者使用`String`类的方法进行字节和字符串之间的转换。通过学习和理解这段...
在Java中,`String` 类型内部是以 Unicode 编码存储的。这意味着,所有的 `String` 对象本质上都是 Unicode 字符串。因此,当你在Java程序中创建一个 `String` 对象时,它默认就是Unicode格式的。 然而,在实际的...
4. `String`类的`getBytes()`和`new String(byte[], charset)`方法处理编码和解码。 5. 文件读写时,可以使用`FileReader`、`FileWriter`,或者指定字符集的`InputStreamReader`和`OutputStreamWriter`。 6. 在网络...
Java的`getBytes()`和`new String(byte[], charset)`方法用于在字符串和字节数组之间转换。转换时需要提供正确的字符集,否则中文字符会被错误地解码或编码。 8.总结 Java处理中文编码的关键在于理解Unicode和UTF-...
在Java编程语言中,字符编码是一个至关重要的概念,它涉及到如何表示、存储和处理文本数据。字符编码系统如ASCII、ISO-8859-1、Unicode(包括UTF-8、UTF-16等)被广泛使用。本教程将深入探讨Java中的字符编码,以及...
本文将详细介绍Java中`String`类的一些常用方法,并通过具体的示例来解释这些方法的功能和用法。 #### 1. 公共构造函数 `public String(char[] value)` 此构造函数用于将字符数组转换为字符串。 ```java char c[] =...
- `public static byte[] decode(String input, int options)`:将Base64编码的字符串解码为字节数组。 - `public static String encodeToString(byte[] input, int options)`:将字节数组编码为Base64字符串。 ###...